「MEncoder/x264/トラブル事例/02_Bフレームを使うとQTP7proで加工不能」の編集履歴(バックアップ)一覧に戻る
MEncoder/x264/トラブル事例/02_Bフレームを使うとQTP7proで加工不能 - (2005/12/21 (水) 21:21:29) のソース
*問題:Bフレームを使うとQTP7proで加工不能 再生はOK。 冒頭に白紙フレームが1枚入る。 *原因:MEncoderの "vfw mode" 冒頭の白紙は、"Delay Frame"。AVIにBフレームを入れる為の裏技(hack)。 Xvidの為に編み出されたものらしい。 DivX社の場合、これとは別種の"Packed B frame"とか、"DivX GOP"などと呼ばれる裏技を使う模様。 いずれも、本来Bフレームを入れる事が不可能なAVIでBを扱う為のもの。 AVI出力からスタートしたMEncoderを使う限り、B使用時の"Delay Frame"の挿入は不可避。 *対策 **1) Bを使わなければ"Delay Frame"は入らず、「問題」は起きない。 **2) Bを使った場合、完成後の.mp4から、冒頭の1フレームをカット。 例:[[QTCoffee>http://www.wikihouse.com/htumenc/index.php?QTCoffee]]で.mov化、QuickTime Player Proで「そのまま」.mp4書き出し $ muxmovie -startAt 00:00:00.06 -self-contained "ffmpegX製B付きx264+aac.mp4" -o "フルパス/出力ファイル名.mov" -カットするフレーム数は指定した秒数に応じて調節される。23.976fpsの場合、1フレームの持続時間は約0.0417sec。 -"-self-contained"を省くと参照形式movになり、速い。 -"-o フルパス/出力ファイル名.mov" を省くとデスクトップに"out.mov"ができる。 --&font(80%){なお、"-mp4" を使うと.mp4出力を試行するが、手許では未成功。} -得られた.movを、QuickTime Player Proで「そのまま」.mp4書き出し。 以上で、QTP7proで再生・加工可能なx264(B使用)+aac.mp4になる。 (*ffmpegでの映像・音声コピーでの.mp4出力は未成功) **3) 音ズレの対処 QTP7proで.movから映像のみ抽出し、別途抽出した音声を追加する。「ムービーに追加」か「選択範囲に調整して追加」かは、ムービーの長さにより異なる。短いものは前者、長いものは後者が適しているようだ。 *MovieVideoChartによる確認 [[Chart.jpg>http://www6.atwiki.jp/how_to_use_ffmpegx/?cmd=upload&act=open&pageid=69&file=050124-Chart.jpg]] MovieVideoChartというツールで.mp4内部のフレーム構造を視覚化できる。このツールについては[[MyCometG3さんのこの記事を参照されたい。>http://blog.so-net.ne.jp/MyCometG3/2005-11-14-1]] **その他 -MEncoderは、PTSを考慮した作りになっていないとの情報もある。事実なら、B付きAVC.mp4出力が安定化する見込みは薄い。 -ターミナルでx264のオプションをいろいろ試す場合、PやBの参照フレーム化など、Xvid等に比べて激しく複雑なオプションも使えるため、AVIからの抽出には疑問が残る。最初からrawvideo(.264)で吐くのが安全だろう。 -"Delay Frame"など、AVIにBフレームを入れる技の詳細は以下を参照。 --[[MPEG-4のB- frameを AVI/VFW に入れるハッキング>http://www.wikihouse.com/htumenc/index.php?MEMO%2FMPEG-4%A4%CEB-%20frame%A4%F2%20AVI%A1%BFVFW%20%A4%CB%C6%FE%A4%EC%A4%EB%A5%CF%A5%C3%A5%AD%A5%F3%A5%B0]](MPlayer and MEncoder on MacOSX)