DivxToM4v
提供:やる気向上作戦
目次 |
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