AviUtl自動フレームシフトにより作られたVFR H.264の再エンコード方法

x264によりエンコードするときに、24fps/30fps混在動画やデ・インターレースに現在有効なのが、AviUtlの「自動フレームシフト」プラグインだ。

で、インターレースのMPEG2動画を自動フレームシフトによりVFR(可変フレームレート)のプログレッシブH.264/AVC動画へ、x264でエンコードしたとする。

一般的にMPEG2->H.264/AVCエンコードでは保存用画質を考慮するため、x264の設定は–profile highにしたり、–crfに低い値を使ったりして、High profileかつビットレートもそれなりに高く、levelも高いファイルが作られる。

PCで再生する分には特に問題はないのだが、問題はそれを再エンコードしたくなったときだ。

たとえば、iPodやWalkmanはH.264を再生できると言っても、baseline profile等のかなり低いprofileまでしか対応していないので、とても再生時負荷の大きいhigh profileの動画は再生することはできない。

また、動画サイズもせいぜい720×480ピクセル程度までであり、1280×720や、1920×1080等のHDファイルを再生することもできない。

となると、当然それらH.264ファイルをiPod用などに合わせて、解像度やprofileレベル、ビットレート等を落として再エンコードすることになるわけだが、ここで問題が生じる。

自動フレームシフトプラグインではVFRファイルが作られ、そのファイルは年中フレームレートが変化している。

そんなわけで、AviUtlやAviSynthでリサイズ等をして、さらにx264で再エンコードしたりしても、もともとのH.264ファイルのタイムコードとズレが生じるため、音ズレが生じてしまう(正確にはビデオ再生フレームレートがズレるため、音とズレが生じる)。

そこで、ここでは、そのようなときのために、音ズレが生じないようにiPod用動画に再エンコードする方法を紹介する。

[パターン1] H.264ファイルのprofileやビットレートを下げたりするだけで良い場合。

1. High profile、高ビットレートで作られたH.264ファイルを、source.mp4とする。これを、mp4boxにて、videoファイルとaudioファイルとにdemuxする。

mp4box.exe -single 1 source.mp4

これで、source_track1.mp4ファイルが作成される。これがsource.mp4のH.264ビデオのみを分離したファイルとなる。

mp4box.exe -single 2 source.mp4

これで、source_track2.mp4ファイルが作成される。これがsource.mp4のオーディオのみを分離したファイルとなる。

2.x264でビデオ・ファイルを再エンコードする。

x264.exe –profile baseline -o dest.mp4 source_track1.mp4

これで、x264により、baseline profileのdest.mp4に再エンコードされる。
ビットレート等を変更したい場合は、それらオプションも適宜追加すればよい。
source_track1.mp4にはVFRタイムコード情報が含まれているので、このままでVFRを維持したまま再エンコードが可能である。

3. mp4boxで再エンコードしたH.264ビデオdest.mp4とオーディオsource_track2.mp4をmuxする。

 mp4box.exe -add dest.mp4 -add source_track2.mp4 -new ipod.mp4

これで、baseline profileに再エンコードされたH.264 VFRのipod.mp4ファイルが作成される。

[パターン2] AviUtlによりリサイズ等画像処理を施してからiPodビデオに再エンコードしたい場合

1.High profile、高ビットレートで作られたH.264ファイルを、source.mp4とする。まずはDtsEditによりmp4ファイルからタイムコード情報を抽出する。

dtsedit.exe source.mp4

これにより、source.mp4のタイムコード情報が抽出され、source.mp4_timecode.txtが作成される。

2.mp4boxにて、videoファイルとaudioファイルとにdemuxする。

mp4box.exe -single 1 source.mp4

これで、source_track1.mp4ファイルが作成される。これがsource.mp4のH.264ビデオのみを分離したファイルとな る。

mp4box.exe -single 2 source.mp4

これで、source_track2.mp4ファイルが作成される。これがsource.mp4のオーディオのみを分離したファイルとなる。

3.抽出したH.264動画ファイルをAviUtlによりリサイズ等フィルタ処理をし、拡張x264出力(GUI)により再エンコードする。

 ext_x264.PNG

ここでは、AviUtlにより1280×720のH.264ファイルから、704×396にリサイズし、拡張x264出力(GUI)によりbaseline profileで再エンコードしたdest.mp4というH.264動画ファイルを作成している。

4. AviUtl+拡張x264出力(GUI)で再エンコードしたH.264ビデオdest.mp4とオーディオsource_track2.mp4をmuxする。

 mp4box.exe -add dest.mp4 -add source_track2.mp4 -new ipod_temp.mp4

これによりbaseline profileに再エンコードされたH.264ファイルdest.mp4とオーディオファイルsource_track2.mp4がmuxされるが、作成されるipod_temp.mp4ファイルにはタイムコード情報が欠落しているため、このままでは音ズレが生じる。

5.dtseditにより動画に元のタイムコード情報を埋め込み、VFR化して音ズレを修正する(正確には、再生する可変フレームレート情報を元に戻す)

 dtsedit.exe -tc source.mp4_timecode.txt -o ipod.mp4 ipod_temp.mp4

これにより、正確なタイムコード情報が埋め込まれ、リサイズ等のフィルタ処理もされ、そしてbaseline profileに再エンコードされたiPod用動画ファイル ipod.mp4 が作成される。

You can leave a response, or trackback from your own site.

Leave a Reply

Powered by WordPress | Designed by: Free MMO | Thanks to Social Games, Game Music Soundtracks and MMORPG Wallpapers