H.264でエンコードする場合、2つのモードがある。品質固定モードと、ビットレート固定モードである。
これらは排他的であり、なにもオプションを指定しないと、品質固定モードでエンコードされる。
H.264を指定するには
-c:v libx264
とする。
品質は-crfで指定する。
とれる範囲は0から51。値が小さいほど、高画質になるが、その分ファイルサイズは増える。
デフォルト値は23。
このモードは1パスである。
ビットレートは、crf値が6減るごとに、およそ倍になる。
18以下でほぼ見た目上の劣化がなくなる。0でロスレスとなるが、ロスレスエンコードには、-cfr 0よりも-qp 0が推奨されている。なおロスレスエンコードを行うと、ffmpegベースのプレーヤー以外では再生できないプレーヤーもあるので注意。
デフォルト値は23であり、通常使われる範囲としては18から28の間が推奨されるが、アーカイブが目的であれば、18よりも小さい値を、モバイル機器で一時的に見るだけであれば、28より大きい値を指定するのもありである。
-b:vでビットレートを指定すると、品質一定モードからビットレート一定のモードに変わる。
1パスと2パスモードでエンコードできる。当然のことながら2パスの方が同じビットレートでも画質は上がる。保存用であればフルHDで25Mbps、4kで100Mbps程度はほしい。
-presetオプションはエンコード速度と品質もしくは出来上がるファイルサイズを決定する。
-preset [ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo]
デフォルトはmedium。
品質固定モードの場合、出来上がる品質は同じであるが、速度が速くなるほど、ファイルサイズは大きくなる。
時間がある限り-preset praceboを使うとより小さいファイルにすることができる。
ビットレート一定の場合は、同じファイルサイズでも、時間をかけた分、品質が向上する。
プリセットで指定した後、さらにtuneで詳細な指定が行ない、動画を最適化できる。
通常使うオプションは、
-tune [film, animation, grain, stillimage, fastdecode, zerolatency]
で、デフォルト値では無指定である。
filmは実写の動画向きに最適化される。
animationはアニメ向けに最適化される。
grainはざらざらが残るような古い映画などをエンコードする際に使われる。
stillimageは、スライドショーなど、動きのほとんどない場合に使う。
fastdecodeはCABACおよびin-loop deblockingを無効にし、デコードの際の負荷を減らす。その分画質は落ちる。モバイル機器など、貧弱な環境向けにエンコードしたい場合に使う。
zerolatencyは再生の際のレイテンシーを減らしたい場合に使う。頭出しは速くなるが、ファイルサイズは少し増加する。
複数のオプション、例えばfastdecodeとzerolatencyを両方指定したい場合は、カンマで区切って指定する。
-tune fastdecode,zerolatency
いくつかの古いプレーヤーは、YUV 4:2:0でエンコードされたファイルの再生しかサポートしていない。
また、Windowsエクスプローラーでサムネイルを表示させる場合や、PowerPointで再生するためには、このオプションが必須である。
YUV 4:2:0でエンコードするには、
-pix_fmt yuv420p
もしくは
-vf format=yuv420p
オプションを付加する。なお、複数の-vfを入れると、最後ののみ有効になるので、-vfオプションが複数ある場合はカンマで区切ること。
動画のインデックス情報はmoov atomに格納されているが、これは通常、ファイルの最後に付加されている。
エンコードする際に、
-movflags +faststart
というオプションをつけると、moov atomがファイルの最初につくようになり、動画ファイルを完全にダウンロードしなくても再生を始めることができるようになる。
なお、動画サイトではサイト側で自動的に付加される。
最終更新日