« 放送中アニメのインプレッションレビュー(2010秋)まとめ | トップページ | 【Panasonic】アバター 3D by VIERA TH-P50VT2 »

2010年10月30日 (土)

VFRなmp4を綺麗かつ手軽に再エンコしてみる思索

 

 前置き 

Dscf6130

かつてWalkman/iPhone 3G新調時に再生可能な動画の作成方法を調べまくり、当時は「Walkmanのまとめwikiで公開されていた携帯動画変換君・改(と言ってもini弄って外部プログラム導入しただけのものだけど)を使う」というところに落ち着いていた。

最初こそポータブル機をフル活用しようとあれこれやっていたが、気付くと動画なんて見なくなってしまっているのはいつものことで(^-^; 長らく放置プレイ状態にあったが、ふとしたことでiPhoneで動画を扱う機会が再来。久々に上記変換君を引っ張り出し使ってみたところ、エンコにある程度慣れてしまった今では色々と粗が目立つ。あまりにあんまりであったため、色々と試した結果最終的に至った結論をここに書いておこうと思う。

 

 課題 

New_3gp

まず画質とか処理速度とか以前に、今更ながら気付いた一番の問題点が「自分の残しているmp4動画はすべて自動フィールドシフトでインタレ解除しているため、VFR(可変フレームレート)になっている」ということ。上記変換君ではVFRなんて当然考慮されていないので、当時満足していた変換動画は余すことなくカクカクしていた。なんで気付かなかったあの頃の自分orz

これに加えてリサイズ処理のボケ具合も大きく、「フレーム数を全く弄らずに再エンコ出来ること」「優秀なリサイズアルゴリズムが使えること」そして「H.264(理想はx264)が扱え詳細なエンコード設定が出来ること」を条件とすると、便利そうな動画変換ソフトは軒並み対象外に。あまり手間を掛けたくなかったので常用しているAviUtlは使わない方向で考えていたが、結局今回もこいつに頼ることになってしまった。

 

 思索 

用意するものとして、AviUtl側は本体の他に拡張x264出力(gui)[x264gui.auo]、MP4 File Reader[mp4input.aui]、Lanczos 3-lobed 拡大縮小[lanczos3.auf]のプラグイン3点。そしてneroAacEnc.exeとDtsEdit.exe。※saraphyさんのサイトがダウンしていて上記がすべて揃わない人は、当記事最下段[最後に]にミラーへのリンクがあるので、そちらも要確認。

1_2

上記をすべてインストールしたら、まずファイル>環境設定>システム設定で「追加読み込みしたファイルのfpsを変換しない」にチェック。あとは普通に再エンコしたいVFRなmp4をAviUtlでファイル>開く。DirectShow File Reader プラグインも入れているような場合は、ファイル>環境設定>入力プラグイン優先度の設定でMP4 File Readerの優先順位が前者の上に来るようにしておくこと。

2

読み込んだらAviUtlデフォルト設定の「サイズ」やら「フレームレート変更」やら「インターレースの解除」やらの設定をあらかた“なし”にして、Lanczos 3-lobed 拡大縮小で最適な解像度を設定。上記はiPhone 3Gの例で480x270だが、再生したいデバイスのモニタ解像度に合わせて適宜調整を。

3

あとはエンコするだけなので、ファイル>プラグイン出力>拡張x264出力(gui)>ビデオ圧縮でx264の設定画面を出し、ビットレートタブでプロファイルをBaselineにして適用をクリック。

4

コマンドタブに移動し、空欄に-- level 3と記述して画面に反映をクリック。これだけでとりあえずはBaseline profile、level 3準拠の比較的綺麗なmp4が出来る。なお、これはWalkmanやiPhone 3Gにも共通する割とメジャーなラインだと思うが、もしprofileやlevel要件が異なるようならそれに合わせてやればOK。

実際にエンコ→再生してみて画質に不満があるようなら、ここに「ビットレート品質を上げる」「mb-treeレート制御のチェックを外す」という作業も追加するといいだろう。ただ下手に弄るとデバイスの再生可能要件から外れてしまう恐れがあるので、上記以外は触らない方が吉。

5

拡張設定タブに移動し、自動フィールドシフトv7対応にチェックが入っているようなら外しておく。右側の音声設定ではneroAacEnc.exeのパスを指定し、設定はQ-Based AAC 125~~190~kbpsあたりを推奨。音声を再エンコしたくないなら、予めYamb(mp4box)なりで映像と音声を分離しておき映像のみエンコ→分離した音声と合成がベストではあるが、いささか面倒でもある。右下の「mp4box.exeの指定」は、してもしなくてもどちらでもいいだろう。

6

OKを押して設定画面を閉じたら、ファイル名を付けて保存でエンコが始まる。しばらくかかるので、終わるまで放置。

7

AviUtlでのエンコしている間に、DtsEdit.exeにて変換元VFRmp4からタイムコードを抽出しておく。抽出だけならmp4を直接DtsEdit.exeにD&DしてやるだけでOK。mp4と同フォルダ内にタイムコード(txt)ファイルが自動生成される。

これはmp4input.auiで入力されたファイルが平均fps値を参照したCFRとして扱われてしまうことへの対処。そのままでは所々音ズレが生じてしまうが、フレーム数自体はオリジナルと不変であるので、元のVBR情報(=タイムコード:各フレームごとの絶対時間)に補正してやることで音ズレは解消される。

8

エンコが終わったら、再びDtsEdit.exeを使って先程抽出したタイムコードをエンコしたmp4に埋め込む。本来DtsEdit.exeはコマンドラインにて使用するものなので、上記のように「DtsEdit.exeのパス -tc “タイムコード(txt)ファイルのパス” “エンコしたmp4のパス”」と記述してやる必要があるが、パスの箇所は該当ファイルをコマンドプロンプトのウィンドウ内にD&Dしてやれば勝手に記述されるため、手順としては①DtsEdit.exeをD&D②“ -tc ”と記述③タイムコードファイルをD&D④スペース⑤mp4をD&DでOK。

9

あとはエンターキーを押すだけで、mp4ファイル名末尾に“_tc_input”が付加されたタイムコード埋め込み済みmp4ファイルが同フォルダ内に自動作成される。もし自分でファイル名や出力パス決めたいなら“ -o ”コマンドで指定も出来るが、手間を考えると自動作成された“_tc_input”付mp4を弄る方が早いだろう。もし処理に失敗するようなら、コマンドに間違いがなかったかの確認&上記のように“ -no-dc”の追記(初期ディレイカットの無効)を試してみて欲しい。

 

 最後に 

以上、初心者でもわかる(と思う)VFRなmp4再エンコ思索終了。今回は“手軽さと綺麗さ(画質)のバランス”ということが前提にあったので、突き詰めれば「フィルタの併用」「x264の詳細設定」「batを使った作業効率化」等々改善の余地は多分にあるが、まあポータブルデバイス向けの再エンコだし、そこまで拘る必要もないように思う。

ただ現在、肝心のx264gui.auoやmp4input.aui、DtsEdit.exeを開発、配布しているseraphyさんのサイトが数カ月間サーバー落ちっぱなし状態にあるため、すでに上記ツールを入手している人以外はそれらを揃えるのに苦労するかもしれない。とりあえず当記事記載時点においては、x264gui.auoはこちら、mp4input.auiはこちら、DtsEdit.exeはこちらから、それぞれ入手可能となっている。

 

…ちなみにだが、(たまにならともかく)頻繁に動画を持ち歩くような人は、いちいち↑こんなことやるよりサクっとフルHD再生できるAndroidデバイスでも買った方が幸せになれると思う。GALAXY S欲しいわ( ̄o ̄;)ボソッ

 

 

   

|

« 放送中アニメのインプレッションレビュー(2010秋)まとめ | トップページ | 【Panasonic】アバター 3D by VIERA TH-P50VT2 »

エンコード関連」カテゴリの記事

コメント

とても参考になりました。
再エンコで音ズレしてた原因も分かり大満足(*^_^*)
ありがとうございました。

投稿: motors | 2011年4月15日 (金) 20時53分

このサイトを見て、
やってみたら音ズレがしなくなりました。
vfrの音ズレがなくなってよかったです(^-^)
ありがとうございましたm(__)m

投稿: hashi | 2012年11月24日 (土) 18時13分

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: VFRなmp4を綺麗かつ手軽に再エンコしてみる思索:

« 放送中アニメのインプレッションレビュー(2010秋)まとめ | トップページ | 【Panasonic】アバター 3D by VIERA TH-P50VT2 »