前回更新「Premiere ProとEncoreでH.264が音ズレする (個人的な) 問題ようやく解消」の続きに当たるエントリー。

上リンク先の要約
Premiere Proで (1本の動画を複数に分割して) 出力した場合、動画は音声よりも1フレーム余分に出力されてしまうので再結合時に結合ヵ所で1フレームずつカットしないと音声との同期が取れなくなってしまう。

今回のお話し
例えばPremiere Proから Mpeg2形式で動画を出力して、それをAviSynthに読み込ませたい場合は以下のように行う。
(DGIndexの利用を前提としている)

LoadPlugin("X:\AviSynth\plugins\DGDecode.dll")

  MPEG2Source("D:001.d2v") \
+ MPEG2Source("D:002.d2v").Trim(1,0) \
+ MPEG2Source("D:003.d2v").Trim(1,0) \
+ MPEG2Source("D:004.d2v").Trim(1,0) \
+ MPEG2Source("D:005.d2v").Trim(1,0) \
+ MPEG2Source("D:006.d2v").Trim(1,0) \
+ MPEG2Source("D:007.d2v").Trim(1,0) \
+ MPEG2Source("D:008.d2v").Trim(1,0) \
+ MPEG2Source("D:009.d2v").Trim(1,0) \
+ MPEG2Source("D:010.d2v").Trim(1,0) \
+ MPEG2Source("D:011.d2v").Trim(1,0)

return last

おまけ(というか応用)

LoadPlugin("X:\AviSynth\plugins\DGDecode.dll")

  MPEG2Source("D:001.d2v").mt("TemporalSoften(3,10,12,20,2)",9,0) \
+ MPEG2Source("D:002.d2v") \
+ MPEG2Source("D:003.d2v").mt("TemporalSoften(2,6,10,20,2)",9,0) \
+ MPEG2Source("D:004.d2v").Trim(1,0).mt("TemporalSoften(1,4,6,20,2)",9,0) \
+ MPEG2Source("D:005.d2v").Trim(1,0) \
+ MPEG2Source("D:006.d2v").Trim(1,0) \
+ MPEG2Source("D:007.d2v").Trim(1,0) \
+ MPEG2Source("D:008.d2v").Trim(1,0) \
+ MPEG2Source("D:009.d2v") \
+ MPEG2Source("D:010.d2v").Trim(1,0) \
+ MPEG2Source("D:011.d2v").ConvertToYV12

return last

ファイル別に「異なる処理」を行いたい場合は「.」を付けて処理を付加しながら読み込む。
スポンサー リンク

今回の場合の謎

  • 11個に分割した動画をPremiere Pro上でそのまま結合した場合、9フレーム分動画の方が長くなってしまった。
    • 11個すべてのファイルを個別にチェックすると、すべて動画の方が1フレーム多いのだが、タイムライン上に11個連続で並べると余分フレームは9枚に減る。
    • 2フレーム分はどこ行ったw
  • AviSynthで結合しx264で出力したファイルは、(Premiere Proのタイムライン上に置いた場合は) 「Trim(1,0)」を6個 (6フレームカットした状態) で音声と動画のフレーム数がピタリと一致した。
    • 更に3フレームどこ行ったw
  • ここで注意
    このavsファイルを X264 で処理する場合、出力はRAW形式にして、音声とのオーサリングはAdobe Encoreを使う。
    • このAviSynthでカット出力したファイルは、Premiere ProやEncoreでMUXすると音ズレしない癖にtsMuxerGUIでMUXすると激しくズレる。
    • ※補足
      tsMuxerGUIでMUXした動画はMPC-HC、VLC Media Player、PowerDVDなどで再生すると音ズレしていない。
      このファイルをEncoreに読み込んでオーサリングすると、完成したBDは音ズレしてる。

 

音ズレの世界は深い。

あと、もう一言二言なにか書きたかった筈なのだけどここまで書いたら何を書きたかったか忘れてしまった。今日はここまで。