2008年5月13日火曜日

動画の音ズレと格闘

unDRMしたGyaoのasfをDVDにすると音ズレ発生

Gyaoから落とした asf を Automate unDRM で処理し(この時点では音ズレなどの問題は無い), DVD Flick や DVDforger で DVDビデオに変換すると,長いビデオは途中から音がずれてしまう.

この現象は,Automate unDRM で処理した asf のファイルサイズがオリジナルのファイルよりも小さくなることと関係あるのだろう.FairUse4Wm で処理したものは音ズレしないという情報があるが,FairUse4Wm を使えば変換の前後でファイルのサイズに変化は無いことを考えると,この情報はおそらく正しいだろう(まだ試してはいない).

しかし,Automate unDRM で処理した asf のストックをDVDにしたい気持ちは捨て難い.なんとか音ズレを避ける方法はないものだろうか.

そこで,まずは,DVDビデオと圧縮動画の関係についてお勉強することにした.

DVDビデオはMPEG-2から再圧縮なしに直接つくることができる.
MPEG-2以外の動画ファイルはいったんMPEG-2に変換(再圧縮・再エンコード)してからDVDビデオをつくる.
DVD MPEG 完全詳細マニュアルの記事〔DVDビデオからMPEG-2へ,MPEG-2からDVDビデオへ〕より引用

なるほど.では,DVDビデオとMPEG-2はどういう関係にあるのだろうか.

■DVDビデオをMPEG-2に変換する法〔前掲ページ要約〕

1.映像ストリームと音声ストリームに分ける(demuxという)
 1-a. 映像ストリームはVobEditやTMPGEncを使って取り出す(m2vファイル)
 1-b. 音声ストリームはDVD2AVIを使って取り出し(wavファイル),TMPGEncでmp2に変換する
2.両者を再合成してMPEG-2に変換する(remuxという)
 2-a. 両者をTMPGEncにかけてm2pファイルに変換.これでMPEG-2の出来上がり.

■MPEG-2をDVDビデオに変換する法〔前掲ページ要約〕

1.映像ストリームと音声ストリームに分ける
 1-a. mpgファイルをTMPGEncにかけて映像ストリーム(m2v)と音声ストリーム(mp2)を取り出す
2.両者を再合成してDVDビデオに変換する
 2-a. m2vとmp2をIfoEditにかける

つまりDVDビデオとMPEG-2とで映像データと音声データの形式に変わりは無いという事であろう.映像と音声の混ぜ方だけが違うのだと考えてよさそう.

【実験1】
そこで試しに,DVDビデオにすると音ズレる asf (以後 "foo.asf" とする)を Any Video Converter を使って MPEG-2 に変換してみた.すると,得られた mpg には音ズレが生じていた.なるほど確かにこの時点ですでに音ズレる訳か.

この mpg をこのままDVDビデオに変換してもうまくいく訳がない.ならばまず考えられるのが,このmpgをdemuxして映像ストリームと音声ストリームに分け,音声ストリームをいじくってからDVDビデオにremuxする,という方法だ.

という訳でさっそく実験.その前に必要なアプリの調達から.

TMPGEnc には有償版とフリーウェアがある.無料版でMPEG-2 ファイルを扱うことができるのは最初の1ヶ月間のみ.ちょっと痛いが,MPEGのライセンス問題が絡んでいるため,有償なのは致し方ない.β12a以前のバージョンにはこのような制約が無かったというが,今となっては探すのも大変だろう.このあたりで検索したら見つかるやかも知れない.

【実験2】
再生時間が120分強の asf 形式動画をTMPGEnc で m2v と ac3 に分離してみた.できたファイルの再生時間を MMname2 で調べてみると,
   音声 foo.ac3 2:05:21 (正常)
   映像 foo.m2v 0:26:37 (異常)
となっている.音声は正常だが,映像の方は名目上の再生時間が26分しかない.m2vにはちゃんと2時間分の映像データが入っており,プレイヤーでちゃんと最後まで再生できるにもかかわらず,だ.26分というのは,おそらく最初にCMが入った時刻と思われる. ▼

m2v ファイルが孕むこの矛盾を解消してやれば,DVDビデオに変換した際の音ズレは無くなるのではなかろうか.しかし,ファイル内のどこをどう書き換えればよいのか分からないので,手の施しようがない.後ほどツール探しでもすることにして,ここは一旦保留にしよう.



以上の情報から,音ズレは asf を m2p に変換する時点で発生したと考えられる.それを裏付けるのがMyCometG3にあった次の記事.

 ・m2vなmpegは時間同期の概念がないけどvobにはある
 ・AVIにはトラック間で時間同期をとる概念がもともとない

0 件のコメント: