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 自体にはこの機能がないため、方法はシステムに依存します。
ForFiles
Windows では、パターン (例: *.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' \;