iPod touchで再生できる動画 VFR再エンコード編

この回の続きのようなものです。

今回は再エンコード編ということで、iTunes経由で転送できないmp4の動画を再エンコードで転送できるようにしてやろう、という計画でしたが・・・。

これがまた面倒でした。エンコードで使用するソフトはMediaCoderを使います。それ以外にも副作用でいくつかソフトが登場します。

MediaCoderはVFRの再エンコードがちょっと苦手

のような感じです。フレームレートが正しく設定できないような感じでした。

そのまま変換すると途中で変換が止まってしまう例やらフレームレートが明らかにあっていない例やらが出てきているのを確認しています。

これをクリアするために一部コマンドラインからの操作で何とか使用としてみました。

手順がちょっとやっかいだが

こんな感じです。

1.mp4boxで対象のmp4から各ラインを取り出す

> mp4box -raw 1 source.mp4

> mp4box -raw 2 source.mp4

まずはこれでそれぞれのラインを抽出します。各トラックが映像ライン・音声ラインでないときはそれぞれを指すようにしてください。

これでsource_track1.h264とsource_track2.aacというファイルが作成されるはずです。

2.作成されたh264をMediaCoderでmp4に変換

気をつける点はこれで説明したとおり、プロファイル設定をBaseline(or Main)[Ver2.1]にすることです。

それ以外はあまり気にしなくても大丈夫です。画像サイズも一応640×480[4:3],640×360[16:9]を推奨しましたが、今現在は960×540[16:9]での変換をしています。

このとき、フレームレート情報は絶対にいじらない(強制設定を行わない)でください。h264ファイルからでも変換できるので微妙に便利です。

3.dtseditで元々のファイルからタイムコード抽出

> dtsedit -o timecode.txt source.mp4

mp4の映像ラインがVFRになっているときは、タイムコード情報が必要になります。

dtseditというユーティリティを使ってそのタイムコード情報をいったんファイルとして取り出します。

4.tc2mp4でh264を変換したmp4にタイムコード情報を設定

> tc2mp4 -i encode.mp4 -t timecode.txt -o result.mp4

これでh264から変換されたmp4にタイムコード情報を設定して正しいタイムコードの状態にします。

この操作で出力されたmp4はこの時点でフレーム的なずれは消去されています。

5.別にしておいた音声ラインを結合

> mp4box -add “source_track2.aac”#audio result.mp4

で結合して完了です。音声ラインも再エンコードしたいときはMediaCoderに分離した音声ラインだけを再エンコードしてAACで出力すれば同じ操作で終了します。

すっきりした方法ではないのが残念

というか、もっと簡単な方法があるような気がしますが、無理にMediaCoderをエンコーダに使おうとしたためにこんな手順になっています。

なお、dtseditとtc2mp4は検索で見つかるユーティリティです。あと、それぞれの実行ファイルは同じディレクトリにあるものとしています。

(mp4boxはMediaCoderがインストールされているならtoolsディレクトリにあります)

どのユーティリティが使えるのかを調べるのに妙な時間を使いました・・・。

LINEで送る
[`fc2` not found]
このエントリーを Google ブックマーク に追加

コメントを残す

メールアドレスが公開されることはありません。

*

この記事のトラックバック用URL