DVD→MPEG-4 MEncoderマニュアルメモ

DVD から 高品質MPEG-4 (DivX) へ

素材が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を。重要なのは詳細よりもモーションである。


ビットレートの計算:
ビットレート(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-4Xvid等)はスマートなアルゴリズムで最適化されているのでエンコード時間に対してクオリティーが高め。エンコードを高速にしたい場合は、各コーデックのデフォルト設定を利用するとよい。


マルチスレッドでの実行をサポートしているコーデックも選択肢の一つ。

  • 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の最後に追加すると解決することがある。

AVIコンテナの制限事項

  1. fpsが固定していなければならない。NTSCと映画素材がミックスされている時などに問題がある。
  2. 音源はCBRか固定フレームサイズでなければならないので、Vorbisが使用不可。効率で劣るMP3やAC-3を使用しなければならない。

Matroska container (MKV)

Matroskaコンテナは無料でオープンスタンダードなコンテナフォーマット。AVIに格納出来ないものが格納可:
VBRの音源、variable framerate (VFR)、チャプター、字幕、ファイル添付、複数の音源トラック、エラー検知コード(EDC: error detection code)、AAC (advanced audio coding)、Vorbis, MPEG-4 AVC (H.264) など

  • Matroskaファイルの作成には、主にmkvtoolnixというツールが使われる。