DVD→MPEG-4 MEncoderマニュアルメモ
素材がDVDやTV放送のものだった場合、大抵はNTSC(北米、日本など)かPAL(欧州など)のフォーマットに格納されている。
ソースのフレームレート
- スタンダードフィルム: シアターディスプレイ向け。24fps
- PAL video: PALビデオカメラで50フィールド/秒で撮影されている
- NTSC video: NTSCビデオカメラで60000/1001フィールド/秒で撮影。
- アニメーション: 通常は24fpsだがミックスされている場合もある
- CG: NTSCの場合24fpsか30fps、PALの場合25fpsが一般的
- 1フレーム = 2フィールド
フレームで構成される映像:progressive
独立したフィールドで構成される映像:interlaced または video
テレビに映すための映像は(DVD含む)、フィールドベースのフォーマットに変換しないといけない。これをtelecineと呼ぶ。
- PALとNTSC間の変換は劣化が激しい
DVDのvideoは連続したフィールドがフレームとしてグループ化されている。
DVDやデジタルTVのスタンダードであるMPEG-2は、オリジナルのプログレッシブフレームにエンコードする方法と、いくつかのフィールドをフレームに格納する方法の二つを提供する。これらはsoft-telecinedとよばれ、高い品質が保持される。一方、hard-telecineと呼ばれるものはフィールドを複製してエンコードする。
CBR (Constant BitRate) と Multipass (ABR, or Average BitRate)
CBRはビットレートが一定だが、multipassは前回の統計によって決められる。
ABRをサポートしているコーデックは通常two passエンコードのみをサポートしているが、x264, XviD, libavcodec等はmultipassをサポートしている。
quantizerは一つのフレームを16x16ピクセルのマクロブロック(macro block)に分けたものに適用される。quantizer値を下げると、品質が上がりビットレートも上がる。
CBR:
コーデックは映像をエンコードし、指定されたビットレート以下にするために詳細を捨てる。
大きなビットレート値が指定された場合(10000Kbitとか)は、それぞれのマクロブロックに適用するquantizerの最低値が使われる。(※libavcodecの場合はvgminで指定。デフォルト: 2)
クオリティ重視の場合はCBRを避けること。
Constant quantizer:
vgscaleオプション(libavcodecの場合)で指定されたquantizer値を全てのマクロブロックに対して同様に適用する。
PSNR(peak signal-to-noize ratio)
two passエンコード:
一回目はCBRのように行なうが、それぞれのフレームのログを残す。二回目でそれらを用いて、どのquantizerを使うか決める。早い動きや詳細のシーンでは高いquantizerを、遅い動きや詳細でないシーンでは低いquantizerを。重要なのは詳細よりもモーションである。
- multipassはCBRと同じビットレートでより高品質
ビットレートの計算:
ビットレート(kbps) = (ファイル全体のサイズ(MB) - 音源サイズ(MB)) * 1024 * 1024 / 時間(秒) * 8 / 1000
効率的なエンコーディングのための制約
MPEGは動画を16x16のマクロブロックにわける。マクロブロックは、luma(明度)ブロックとchroma(色)ブロックから構成される。
- 16の倍数を動画の画面サイズに使わないと、ファイルサイズの無駄。
- エッジに黒い部分を残すと、エンコードの効率性が損なわれるのでクロップした方がよい
- MPlayerはビデオの縁のクロップセッティングを表示する機能がある。-vf cropdetect
スケール時、ビットレートは解像度に比例するわけではない。
(320x240の200kbpsと、640x480の400kbpsのビデオのクオリティーは同じではない!)
ビットレートは解像度の二乗に比例するとした方がより正確。ただし実証されてはいない。
(320x240 400kbpsと680x480 800kbps)
CQ (Compression Quality): 1ピクセル当たりのビットと、フレーム当たりのビットを表わす。高い方がより良いクオリティになるが、0.30以上は無駄。
フィルター
クロップ、スケール、色調整、ノイズ除去、sharpening、インターレース解除(deinterlacing)、telecine、inverse telecine、ブロック解除(deblock)など。
例) 左上の隅(12,4)から、688x464にクロップ、640x464にスケール
-vf crop=688:464:12:4,scale=640:464
以下のようなフィルターは最初の方に書かれなければならない。
- pp (postprocessing: deblockやderingをするときに使用)
- spp (MPEGの産物を取り除くときに使用するpostprocessor)
- pullup (inverce telecine)
- softpulldown (soft telecine から hard telecine に変換)
元のDVDソースに近づけるために、フィルターは少ない方がよい。クロップは必要になることが多いが、スケールは避けるべき。ガンマ、コントラスト、明度の調節は避けるべき。再生時に行なった方がよい。対して、軽いノイズ除去フィルター(-vf hqdn3d=2:1:2 など)は効果的。
インターレースとtelecine
ほぼ全てのムービーは24fpsで撮影されている。
それをNTSCのフレームレート(30000/1001fps)で再生するために行なうプロセスを3:2 pulldown、一般的にはtelecineと言う。(pulldownはtelecineプロセス内で行なわれるから。)
PAL DVD(25fps)向けのビデオには何も行なわれない。24fpsを25fpsで再生すると少しだけ早くなるが、人間にはわからない程度である。音源トラックの再生時間はNTSC DVDと比べて4%短かくなる。
PAL DVDの場合、フレームレートは25fpsでよい。
NTSC DVDの場合は、inverse telecineを適用する。
24fpsで撮影された映像でNTSC DVDのものは、30000/1001でtelecineされているか、progressive 24000/1001fpsでDVDプレーヤーによってtelecineされる。しかし、TV番組はinterlaceされているのみで、telecineはされていない。
インターレース解除を行なうと、コンピュータのモニターやプロジェクターといったプログレッシブスキャンのディスプレイで便利。しかし動きの大きな場面で、およそ半分の情報が失なわれる。そのため、インターレース解除はしないほうがよい。インターレース解除は再生時にも可能である。
映像コーデックの選択方法
圧縮効率:
MPEG-4 AVC (H.264) > MPEG-4 ASP (libavcodec, XviD) > MPEG-2
対応ハードウェア:
新しいものは再生出来なかったりすることを考慮する。MPEG-1 (VCD, XVCD, KVCD), MPEG-2 (DVD, SVCD, KVCD), MPEG-4 ASP (DivX, libavcodec's LMP4, Xvid) 等のコーデックはサポートされていることが多い。
品質とエンコード時間:
公開されてから長いコーデック(libavcodec MPEG-4やXvid等)はスマートなアルゴリズムで最適化されているのでエンコード時間に対してクオリティーが高め。エンコードを高速にしたい場合は、各コーデックのデフォルト設定を利用するとよい。
マルチスレッドでの実行をサポートしているコーデックも選択肢の一つ。
- libavcodec MPEG-4は速度向上は限られている。画質が少し低下する。
- Xvidは僅かなな画質の低下で40-60%早くなる。
- x264はPSNRを下げることで96%まで高速化する。
Muxing
例) input_audio.mp2とinput_video.aviを一つのコンテナに格納し、output_movie.aviを作成する。
mencoder -oac copy -ovc copy -o output_movie.avi \ -audiofile input_audio.mp2 input_video.avi
例) 音源とビデオをasfコンテナに格納する
mencoder -oac copy -ovc copy -o output_movie.asf -audiofile input_audio.mp2 \ input_video.avi -of lavf -lavfopts format=asf
- libavformat: いろいろなコンテナのmuxingとdemuxingをサポートする、ffmpegプロジェクトのライブラリ
muxingで音ズレが発生し、それがinverse telecine filterなどでフレームを落としたり複製したりしている時などは、harddupフィルターを-vfの最後に追加すると解決することがある。