FFmpegのコマンド

  • by

自身がよく使うFFmpegでのコマンドの覚書です。

連番ファイルをmp4に変換

入力30fps、出力30fps。
panorama180_0000.png、panorama180_0001.png、panorama180_0002.png、、、の連番ファイルとoutput.mp4として出力します。

ffmpeg -r 30 -i panorama180_%04d.png -vcodec libx264 -pix_fmt yuv420p -r 30 output.mp4

連番ファイルをwebmに変換

入力30fps、出力30fps。
panorama180_0000.png、panorama180_0001.png、panorama180_0002.png、、、の連番ファイルとoutput.webmとして出力します。

ffmpeg -r 30 -i panorama180_%04d.jpg -r 30 -crf 10 -b:v 0 -vcodec vp8 -threads 4 output.webm

変換に時間がかかるようです。
「-vcodec vp8」でコーデック指定。
vp9も指定できます。
なお、4K(4096 x 4096 pixel)までの場合はvp8、それ以上はvp9でないと再生が安定しないようです。
「-threads 4」は変換処理で使用するスレッド数。
「-crf 10 -b:v 0」の指定がないと荒くなりました。

aviからmp4に変換

xxx.aviをoutput.mp4に変換します。

ffmpeg -i xxx.avi -vcodec libx264 -pix_fmt yuv420p -r 30  output.mp4

mp4の場合は「-vcodec libx264 -pix_fmt yuv420p」を付ける必要があります。
「-r 30」は出力時にフレームレートの指定です。

mp4からaviファイルの無圧縮に変換

2020/11/01 追記。

xxx.mp4をoutput.aviに無圧縮で変換します。

ffmpeg -i xxx.mp4 -vcodec rawvideo -r 30 output.avi

「-vcodec rawvideo」で無圧縮の指定になります。
「-r 30」は出力時にフレームレートの指定です。

リサイズ

xxx.mp4を横方向800ピクセルでアスペクト比を保持してリサイズします。

ffmpeg -i xxx.mp4 -vf scale=800:-1 output.mp4

「-vf scale=800:-1」で解像度指定です。
もし、動画解像度の縦方向が2の倍数でない場合は出力に失敗します。
その場合は「-vf scale=800:600」のように値を指定するようにします(エラーが出たときに、縦方向のピクセル数を+1か-1すればよさそう)。

秒数を指定して動画を切り取り

xxx.mp4で、2から20秒分を切り取る指定です。

ffmpeg -i xxx.mp4 -ss 2 -t 20 output.mp4

「-ss 2」で開始秒、「-t 20」で切り取る全体の秒数です。
小数点も指定できます。その場合は、フレームレート(fps)を考慮して小数値を計算しないと、
わずかにタイミングがずれる状態になります。