ffmpegで動画を書き出すときのパラメータ早見表
ffmpegの動画作成とは、画質・遅延・互換性をパラメータで最適化する作業である。
ベース(入出力の基本)
| 項目 |
指定例 |
意味 / 使いどころ |
| フレームレート(fps) |
-r 30 |
出力fpsを固定。入力を等間隔化は -vf "fps=30"。 |
| 解像度(1920x1080) |
-vf "scale=1920:1080" / -s 1920x1080
|
フィルタ指定の方が画質・色管理しやすい。 |
| 再生時間(duration) |
-t 10 / -to 00:00:10
|
指定秒数で切り出し。-ss と併用で区間抽出。 |
| 先頭スキップ |
-ss 3 |
3秒から開始。入出力どちらに置くかで精度と速度が変わる。 |
圧縮方式(コーデックとプロファイル)
| 項目 |
指定例 |
意味 / 注意点 |
| コーデック(codec_name=h264) |
-c:v libx264 |
ソフトH.264。安定・高品質。 |
| プロファイル(Baseline) |
-profile:v baseline |
旧端末互換。CABAC/Bフレーム無効。 |
| Bフレーム(has_b_frames=0) |
-bf 0 |
低遅延・Baseline前提で0。 |
| 参照フレーム(refs=1) |
-refs 1 |
計算量を抑える。 |
| レベル |
-level 3.1 など |
デコーダ制約の宣言。 |
H.264エンコーダ比較(同階層比較)
| エンコーダ |
速さ |
画質/圧縮 |
互換性 |
ひと言 |
libx264 |
中 |
高 |
高 |
まずはこれ。 |
h264_nvenc |
高 |
中 |
高 |
GPUで高速。 |
h264_qsv |
高 |
中 |
高 |
Intel iGPU向け。 |
h264_videotoolbox |
高 |
中 |
高 |
macOSで低負荷。 |
画質と速度(CRF / preset / GOP)
| 項目 |
推奨値 / 指定例 |
意味 / 使いどころ |
| 画質指標(CRF) |
-crf 18〜28(既定23) |
小さいほど高品質・高ビット。VODは20〜24。 |
| 速度/圧縮(preset) |
-preset veryslow〜ultrafast(既定medium) |
遅いほど圧縮効率↑。時間とのトレードオフ。 |
| チューニング(tune) |
-tune film / grain / zerolatency
|
素材特性や低遅延用途に。 |
| キーフレーム間隔(GOP) |
-g 60(30fpsで2秒) |
HLS/DASH、編集点で重要。 |
ビットレート制御(CBR / VBR / VBV)
| 方式 |
指定例 |
使いどころ |
| CBR(固定) |
-b:v 5M -minrate 5M -maxrate 5M -bufsize 10M |
帯域が厳密な配信。 |
| VBR(CRF基準) |
-crf 23 |
画質最優先のVOD。平均ビットは素材依存。 |
| ABR(平均) |
-b:v 5M -maxrate 7M -bufsize 10M |
目標平均+上限。 |
色とピクセル / 表示互換
| 項目 |
指定例 |
意味 / 使いどころ |
| ピクセルフォーマット |
-pix_fmt yuv420p |
Web/モバイル互換の基本。 |
| 色空間メタ |
-colorspace bt709 -color_primaries bt709 -color_trc bt709 |
HD標準。HDR/BT.2020は別。 |
| アスペクト比 |
-vf "setsar=1" / -aspect 16:9
|
歪み防止。SAR/DAR整合。 |
| デインタレース |
-vf "yadif=1" |
インタレ素材をプログレ化。 |
コンテナ / 再生のコツ
| 項目 |
指定例 |
使いどころ |
| MP4の高速開始 |
-movflags +faststart |
moovを先頭へ移動、Web即再生。 |
| 音声コーデック |
-c:a aac -b:a 128k -ar 48000 -ac 2 |
汎用AAC、48kHz、ステレオ。 |
| スレッド |
-threads 0 |
自動並列。 |
ミニレシピ(用途別の組み合わせ)
互換重視(Baseline / 低複雑)
ffmpeg -i in.mp4 -r 30 -vf scale=1920:1080 -t 10 \
-c:v libx264 -profile:v baseline -bf 0 -refs 1 -level 3.1 \
-pix_fmt yuv420p -crf 23 -preset medium -g 60 \
-c:a aac -b:a 128k -ar 48000 -ac 2 -movflags +faststart out.mp4
低遅延(双方向配信やWebRTC収録)
ffmpeg -i in.mp4 -r 30 -vf scale=1920:1080 \
-c:v libx264 -tune zerolatency -bf 0 -g 30 -maxrate 5M -bufsize 5M \
-pix_fmt yuv420p -preset veryfast -c:a aac -b:a 96k -movflags +faststart out.mp4
VOD高画質(編集・アーカイブ)
ffmpeg -i in.mov -r 30 -vf scale=1920:1080 \
-c:v libx264 -profile:v high -crf 20 -preset slow -g 60 \
-pix_fmt yuv420p -c:a aac -b:a 160k -movflags +faststart out.mp4
迷ったら「libx264 + CRF + 適切なpreset」を起点に、帯域や遅延要件に応じて GOP/CRF/maxrate/bufsize を詰めると安定します。