ffmpegでMP4をバッチ変換

Sep 25 2020

フォルダー内にたくさんのテキストファイル、jpg、mp4があります。jpgファイルとテキストファイルはそのままにしておきたい。ディスク容量を節約するために-crf、値が23。のffmpegの引数を使用してすべてのmp4を圧縮したいと思います。ファイルはその場で上書きする必要があります。

ここで@llogan回答を使用し、に置き換え.aviました.mp4が、機能しません。

for f in *.mp4; do ffmpeg -i "$f" -c:v libx264 -crf 23 -preset medium \ -c:a aac -b:a 128k -movflags +faststart -vf scale=-2:720,format=yuv420p \ "encoded/${f%.avi}.mp4"; done

同じ作業ディレクトリ内の他のファイルを削除したり変更したりせずに、formp4を低品質(-crf 23)に変換するループはどうなりますか?サイズ変更、YouTubeアップロード、エンコード速度の変更などを行わないため、他のフラグも必要ありません。

回答

2 llogan Sep 25 2020 at 00:58

またはに変更"encoded/${f%.avi}.mp4"する必要があります:"encoded/${f%.mp4}.mp4""encoded/${f%.*}.mp4"

mkdir encoded
for f in *.mp4; do ffmpeg -i "$f" -c:v libx264 -crf 23 -preset medium -c:a copy -movflags +faststart "encoded/${f%.*}.mp4"; done

私はあなたが必要としなかった他のものをすべて削除しました。入力オーディオはすでにAACであると想定したので、コピーアンドペーストのようなストリームコピーモード-c:a copyを有効にしていました。

-crf 23 -preset mediumはデフォルトであるため、これらの値に問題がない場合は削除できます。それ以外の場合は、使用するものと値のガイダンスについて、FFmpeg Wiki:H.264を参照してください。-crf-preset