ffmpeg - 再エンコードせずに複数のビデオを一度にトリミングしますか?

ffmpeg - 再エンコードせずに複数のビデオを一度にトリミングしますか?

mp4ファイルの最初の10分をトリミングする必要があるフォルダがあります。次のものを使用して個別にトリミングしていますが、1つずつ行うと時間がかかりすぎます。

ffmpeg -i "untrimmed.mp4" -ss 00:10:00 -c copy "trimmmed.mp4"

複数のビデオファイルを一度にトリミングする簡単な方法はありますか?

編集 - その後、PowerShellで回避策を見つけました - 11分を使用する例

Get-ChildItem -Filter *.mp4 | ForEach -Process { ffmpeg -i $_ -ss 00:11:00 -c copy ($_.BaseName + '_Trimmed.mp4')}

答え1

この概念はバッチ処理と呼ばれ、ffmpeg 自体にはこの機能がないため、方法はシステムに依存します。

ForFilesWindows では、パターン (例: *.mp4) に一致するファイルを検索するために を使用し、/C結果に対して ffmpeg コマンドを実行するスイッチを使用するとよいでしょう。

Linux および MacOS のコマンド ラインでは、findスイッチを使用して同じことを行います-exec

どちらの場合でもループを使用できますが、これがすべて実行したい場合、ループを使用すると状況が複雑になりすぎます。

Linux の例では、このコマンドは現在のフォルダー.でパターンに一致する名前のファイルを検索し*.mp4、各結果に対して ffmpeg を実行して{}、eg に出力しますuntrimmed.mp4_trim.mp4(これで作業できますよね?)。;最後のエスケープにより-execスイッチが閉じられます。

find . -iname '*.mp4' -exec ffmpeg -i '{}' -ss 00:10:00 -c copy '{}_trim.mp4' \;

関連情報