DivxToM4v

提供:やる気向上作戦
移動: 案内, 検索

JunkPrograms


目次

DivXの生成するストリームとMPEG4 VESの関係について

  • DivX AVI raw dataの概要
    • VOSヘッダがない
    • profile_and_level_indicationは、常にAdvanced Simple Profile / L5である
    • IPPPPP...の構造をとるとき、必ずlow_delay=1である。IPBPBPB...の構造をとる場合はlow_delay=0である。
    • VOヘッダがない
    • GOVが存在しない
    • Sync PointごとにVOLヘッダが入る
    • BVOPを用いる場合、ストリーム先頭のIVOPをエンコードした次のVOPで、サイズ1バイトで値0x7fのダミーパディングデータを吐く
    • BVOPをエンコードする際、Not CodedなPVOP(サイズ8バイト)をダミーとして吐く
    • fixed_vop_rate=0。VCMで指定したフレームレートを無視し、常に30fps(29.97fps?)を仮定しているようである
  • ISO MPEG4 VESへの変換について
    • VOSヘッダおよびVOヘッダを付加する
    • BVOPを用いる場合はダミーデータをスキップする(Low Delayでないストリームにおいては、Not CodedなVOPの存在は許されない)
    • Sync Pointごとに挿入されるVOLヘッダを削除し、代わりに closed_gov フラグを立てたGOVヘッダを挿入する


XviDの生成するストリームとMPEG4 VESの関係について

  • XviD AVI raw dataの概要
    • VOSヘッダおよびVOヘッダが存在し、そのプロファイル/レベルは常にSP/L3である(BVOPやGMC,Quarter Pel MVを用いる場合でも)
    • Sync PointごとにVOLヘッダが入る
    • BVOPを用いる場合、2番目のフレームをエンコードする際にサイズ1バイト、値0x7fのスタッフィングバイトを出力する(DivXと同じ)
    • 必ずfixed_vop_rate=1である。また、VCMで指定したフレームレートを守ってレートコントロールが行われているようである。
    • 明らかにDivXより頭がいいよ!
  • ISO MPEG4 VESへの変換について
    • ダミーデータのスキップ
    • GOVヘッダの挿入

試作プログラムのダウンロード

planar YUVファイルもしくは任意のAVIファイルを、MPEG4 Video Elementary Streamに変換する。 DivXもしくはXviDのVCMがインストールされていれば動作するはず。

使い方

divxenc foo.avi bar.m4v
divxenc -w width -h height -r frameRate -c chromaFormat baz.yc bar.m4v
個人用ツール