FFmpegで連番画像から動画を作成する際のTIPSをまとめてみました。
※一部、過去記事と重複する内容もあります。
画像ファイルから動画ファイルを作成するコマンド
0001.png
、0002.png
、0003.png
…という連番画像から動画ファイル(MP4)を作成するには以下のようなコマンドを実行します。
$ ffmpeg -i %04d.png -c:v libx264 output.mp4
%04d.png
の部分が連番画像ファイルを指定する部分になっています。
例えば、image_001.png
、image_002.png
、image_003.png
…というファイル名になっている場合はimage_%03d.png
のような感じにします。
関連記事: アニメーションGIFの作り方
フレームレートの設定
オプションを指定していない場合、フレームレートが25fps
の動画ファイルが作成されます。変更したい場合は-r
コマンドでフレームレートを設定してください。
$ ffmpeg -r 30 -i %04d.png -c:v libx264 output.mp4
画質の設定
動画の画質を設定する場合は-crf
オプションを使います。デフォルトでは23
になっています。画質を上げたい場合はより小さな値を、画質を下げたい(ファイルサイズを小さくしたい)場合はより大きな値を設定します。
$ ffmpeg -i %04d.png -c:v libx264 -crf 20 output.mp4
関連記事: FFmpegでYouTube向けにエンコード
ループの設定
動画を何周かループさせたい場合は-stream_loop
オプションを使います。例えば、-stream_loop 2
とすると、最初の1周分とあわせて同じ内容が3回表示される動画ファイルになります。
$ ffmpeg -stream_loop 2 -i %04d.png -c:v libx264 output.mp4
YouTubeなどのサイトにアップロードする場合
YouTubeなどの動画サイトにアップロードする場合は-pix_fmt yuv420p
を付けないと正常に再生できない場合があります。アップロードしてみて、正常に再生できないようであれば、設定を見直してみてください。
$ ffmpeg -i %04d.png -c:v libx264 -pix_fmt yuv420p output.mp4
関連記事: FFmpegでYouTube向けにエンコード
関連記事
アニメーションGIFの作り方
0000.png, 0001.png, 0002.png, ...の連番PNGファイルからアニメーションGIFを作るコマンド
ffmpeg編
$ ffmpeg -framerate 30 -i %04d.png output.gif
convert編(ImageMagick)
$ convert -delay 10 -loop 0 *.png output.gif
...
FFmpegで動画から静止画像を出力する方法
FFmpegで動画ファイルから静止画像を出力したい場合は、次のようなコマンドを実行します。
$ ffmpeg -an -i video.mp4 %04d.png
0001.png、0002.png、0003.png、...のような連番ファイルが出力されます。
一部のみ抜き出したい場合は-ssオプションで開始時刻を、-tオプションで長さを指定します。
$ ffmpeg -a...
FFmpegで動画を連結するコマンド
1. 連結したい動画をテキストファイルに書き出します。
$ vi list.txt
$ cat list.txt
file '/path/to/file1.avi'
file '/path/to/file2.avi'
file '/path/to/file3.avi'
2. FFmpegを実行します。
$ ffmpeg -f concat -safe 0 -i list.txt...
FFmpegで5.1chオーディオを2chに変換
FFmpegを使って5.1chオーディオのファイルを2ch(ステレオ)に変換するコマンドのメモ
down-mix
ダウンミックスして2chオーディオに変換
$ ffmpeg -i input.wav -ac 2 stereo.wav
FL/FRを抜き出す
「Front Left」「Front Right」のオーディオを抜き出して2chオーディオに変換
$ ff...
FFmpegでボトムフィールドファーストのインターレース形式にエンコード
ボトムフィールドファーストでエンコード
FFmpegでBottom Field First(BFF)のInterlace形式のx264にエンコードする方法を調べてみました。
とりあえず自分の環境でうまくいったコマンドは次のような感じです。
$ ffmpeg -i input.avi -flags +ilme+ildct -top 0 -c:v libx264 -x264opts...
FFmpegでYouTube向けにエンコード
FFmpegでYouTube向けにエンコードしたい場合は
$ ffmpeg -i input.avi -c:v libx264 -preset slow -crf 18 -c:a copy -pix_fmt yuv420p output.mkv
のようなコマンドでエンコードできます。
ポイントは-pix_fmt yuv420pの部分だと思います。-pix_fmt yuv420p...