2005年11月30日

MEncoder経由でQT加工できるAVC/H.264.mp4(B使用)ができた。

【概要】MEncoder-raw x264->mp4box-x264.mp4, ffmpeg-aac.mp4, QTCoffee-.mov, QTpro-.mp4
【タグ】[.mp4][x264][MEncoder][QTCoffee]
MEncoder 経由でAVC/H.264.mp4を作る上での問題点に頂いたコメント。
QTPlayerで1フレーム目を切ると「そのまま」行ける様です。
Posted by Y at 2005年11月30日 14:12
これに従って「そのまま」行けるB付き.mp4作成に成功しますた。大変有り難くm(_ _)m 。

手順

QuickTime Player Proは1sec以下の細かいカットを想定していない。QTCoffeeを使用。
  1. MEncoderでx264 rawvideo出力、mp4boxで映像のみ.mp4化。
  2. QTCoffee/muxmovieでアタマを0.06secカット (23.976fpsなので約1.5frame)。
  3. $ muxmovie -startAt 00:00:00.06 T_CMcar_7mVBR.V.mp4
  4. デスクトップにout.mov(参照形式)ができる。別途ffmpegで作成したaac音声を映像に合わせて貼付け、 QuickTime Player Proで「そのまま」mp4書き出し。

結果

mp4box:時間差0.021sec。
 *QTCoffeeを経由せずに作ったものと同じ結果。MEncoder- AVI経由、rawvideoとも全く同じ(dev-CVS-051130-19:12-4.0.1)。違いは各ストリームではなく、ムービー全体の Duration。
$ mp4box -info /Users/XXX/Desktop/out3.mp4 
* Movie Info *
Timescale 600 - Duration 00:00:14.830
Fragmented File no - 2 track(s)
File Brand mp42 - version 1

File has no MPEG4 IOD/OD

Track # 1 Info - TrackID 1 - TimeScale 23975 - Duration 00:00:14.890
Media Info: Language "und" - Type "vide" - Sub Type "avc1" - 357 samples
MPEG-4 Config: Visual Stream - ObjectTypeIndication 0x21
AVC/H264 Video - Visual Size 640 x 480
Self-synchronized

Track # 2 Info - TrackID 2 - TimeScale 48000 - Duration 00:00:14.869
Media Info: Language "eng" - Type "soun" - Sub Type "mp4a" - 697 samples
MPEG-4 Config: Audio Stream - ObjectTypeIndication 0x40
MPEG-4 Audio AAC LC - 2 Channel(s) - SampleRate 48000
Synchronized on stream 1
QuickTime Player 7 Pro:時間差0sec。
 *映像で0.06sec短くなっている。
out3.png

従って、この操作で弄っているのはファイル全体のヘッダだけで、各ストリームはそのままと思われる。
この後、画面の表示サイズ変更、「そのまま」書き出しも成功。
ま、QTがいいって言うんだからいいんじゃねぇの?

考察

MEncoderは、-of avi以外でもvfw mode2種の内、"delay frame"を使うと考えて良いと思う
MEncoder,ffmpeg,mp4boxだけで作成したB付き.mp4は、
  • QT Playerでは冒頭に白紙フレームが入る。
  • MPEGstreamclipでは先頭フレームで映像表示領域の背景(5個の青丸)が見える。
これはDoom9のbond氏の説明と符合する。参考:MPEG-4のB- frameを AVI/VFW に入れるハッキングについて
なお、delay frameの場合、尻も1フレーム消失している筈。参考:AVIからH.264を抽出すると3フレームずれる

AVIに特化してきた経緯からBを使えば自動的にそうなってしまうのだろう。
なお、直近のMPlayer( dev-CVS-051130-19:12-4.0.1)で、映像とffmpeg製音声の再生時間差は改善した。
AVI経由、直接raw264作成ともmp4boxの表示は全く同じ結果だった。常用設定は23.976fpsなので、
ズレたとしても1フレームの表示時間の半分ほど。妖精さんの記事によれば、特に気にしなくても良い範囲。参考:音ズレの許容範囲

使用したツール・コマンド。

MEncoder: dev-CVS-051130-19:12-4.0.1(x264 core:41 svn-380) 参考
ffmpeg:ffmpeg-MobileHackerz-051107-MacOSX-2 ウェアラブル奮闘日記--2005/11/09
mp4box:ffmpegX0.0.9t-r4内蔵版
QTCoffee 1.2:参考
===MENCODER_PASS1===
mencoder T_CMcar_7mVBR.mpeg -nosound -ovc x264 -x264encopts threads=2:me=3:bitrate=1024:qp_min=16:qp_max=51:i4x4:frameref=5:subq=6:keyint=230:cabac:deblock:nob_adapt:bframes=1:turbo=1:pass=1 -passlogfile T_CMcar_7mVBR.264.log -vf pullup,softskip,crop=704:464:8:8,scale=640:480,hqdn3d=4:3:6,pp=l5,harddup -sws 9 -ofps 23.976 -of rawvideo -o /dev/null
===MENCODER_PASS2===
mencoder T_CMcar_7mVBR.mpeg -nosound -ovc x264 -x264encopts threads=2:me=3:bitrate=1024:qp_min=16:qp_max=51:i4x4:frameref=5:subq=6:keyint=230:cabac:deblock:nob_adapt:bframes=1:pass=2 -passlogfile T_CMcar_7mVBR.264.log -vf pullup,softskip,crop=704:464:8:8,scale=640:480,hqdn3d=4:3:6,pp=l5,harddup -sws 9 -ofps 23.976 -of rawvideo -o T_CMcar_7mVBR.264
===MP4BOX_--mux===
mp4box -fps 23.976 -add T_CMcar_7mVBR.264 -new T_CMcar_7mVBR.mpeg.mp4
===QTCoffee===
muxmovie -startAt 00:00:00.06 T_CMcar_7mVBR.V.mp4
===FFMPEG_AUDIO===
ffmpeg -i T_CMcar_7mVBR.mpeg -y -vn -f mp4 -acodec aac -ar 48000 -ac 2 -ab 64 -map 0.1:0.0 T_CMcar_7mVBR._aac.mp4

To Do

当面はこの手で凌ぎつつ、MEncoderのx264オプションで遊べる。720x480のままエンコードしてQTで表示サイズだけ変えるといった事も可 能だろう。

しかし、QuickTime Player Proを経由すると、今の自分ではシェルスクリプト化ができない。
QTCoffee/muxmovieは-mp4出力も可能だが、 "delay frame"付き.mp4は再エンコードを要求する。

前掲の、MPEG-4のB- frameを AVI/VFW に入れるハッキングについて で、bond氏はこう述べている。
virtualdub(mod)にこうした"ディレイ・フレーム"をドロップさせればいい。これで最終的な出力スト リームの中には"ディレイ・フレーム" はなくなる。
しかし、vfwコデックを使う他のツールでは"ディレイ・フレーム"が残ってし まう可能性がある。注意してくれ。
望み得る最善は、MEncoderに冒頭1フレームを「ドロップ」させてしまう事だ。次善はmp4box。それが成れば、シェルスクリプト化できる。
posted by ばる at 23:23| Comment(0) | TrackBack(0) | mencoder-x264 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス: [必須入力]

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/10025942
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。