ffmpegで動画をエンコードする
概要
目次
準備
- "ffmpeg" のインストールされた環境 simple.hatenablog.jp
手順
映像オプション
ffmpeg -i <入力ファイル> -c:v<コーデック> -r <fps> <出力ファイル>
-i <入力ファイル>
: 元となる動画を指定する。-c:v <コーデック>
: 動画のコーデックを指定する。- H.264 : libx264
-r
: 動画のフレームレート。- 24
- 30000/1001
エンコードモード
1Pass(CRF)
-crf 20
ファイルサイズが重要ではなく、ある程度一定の品質を保ってエンコードしたい場合に使用する。
0-51の範囲で指定し、0=ロスレス、23=デフォルト、51=最低。
良 悪 画質 0------------------------------51 大 小 ファイルサイズ
また、-maxrate <bps>
で最大ビットレートを指定できる。
2Pass
ffmpeg -i <入力ファイル> -c:v <コーデック> <bps> -an -pass 1 -f mp4 NUL && ffmpeg -i <入力ファイル> -c:v <コーデック> -b:v <bps> <音声オプション> -pass 2 <出力ファイル>
ファイルサイズがある制限されている場合はこちらを使用する。大体、1Passの2倍の時間が必要。
-an
: 音声ファイルを出力しない。
プリセット
-preset:v -medium
プリセット
デフォルトでは"medium"が指定される。遅いプリセットの方がエンコードに時間が掛かるがファイルサイズに対しより高画質になる。
チューイング
-tune animation
入力する動画の種類によって指定する。デフォルトでは"none"が指定される。
- film
- animation
もしも、何を使えばいいか自身が持てなかったり、入力がどのチューニングにも合致しないのであれば、 その時は「-tune」オプションを省略してください。
出展 : FFmpeg, H.264 エンコーディングガイド
プロファイル
-profile:v baseline -level 3.0
古い再生デバイスなどと互換を持たせたい場合に使用する。
一般的にはこの設定をする必要はないでしょう (そしてそれゆえに「-profile:v」と「-level」を使うのは避けてください)。
出展 : FFmpeg, H.264 エンコーディングガイド
リサイズする
Pixelでサイズを指定する
-s <横>x<縦>
アスペクト比
アスペクト比を指定する
-aspect 16:9
アスペクト比など自動計算に任せる
-vf scale=640:-1
インターレースを解除する
-filter:v yadif
音声オプション
ffmpeg -i <入力ファイル> -c:a <コーデック> -b:a <bps> -ar <サンプル周波数> <出力ファイル>
-c:a <コーデック>
: 音声のコーデックを指定する。- AAC : libfaac
- mp3 : libmp3lame
-b:a <bps>
: 音声のビットレート。-ar <サンプル周波数>
: 音声のサンプル周波数を指定する。基本的に44100
or48000
。
参考
以上。