H264M2tsToMp4EncodingWithX264

2012-08-26 11:59:01 +0900 (4254d); rev 5

パナソニック製 BD レコーダ「DIGA」から引っこ抜いた H.264 な m2ts ファイルを、x264 でエンコードして mp4 ファイルにする手順。

前提

必要なソフト

手順

1. m2ts ファイルを DirectShow で再生できるようにする

2. m2ts を読み込むための avs ファイルを作成する

DirectShowSource("00001.m2ts", audio=true, pixel_type="YUY2")
ConvertToYV12(interlaced=true)
AssumeTFF()

修正版

LoadPlugin("warpsharp.dll")
LoadAviUtlInputPlugin("ds_input.aui", "DSInputAUI")
video = DSInputAUI("00001.m2ts")
audio = DirectShowSource("00001.m2ts", video=false, audio=true)
AudioDub(video, audio)
ConvertToYV12(interlaced=true)
AssumeTFF()

読み込み時に以下のようなエラーが出るのは修正前後で変わらず(LAV Splitter Ver.0.35 で確認)。

[mpegts @ 02f40de0] Continuity Check Failed
[mpegts @ 02f40de0] Continuity Check Failed
[mpegts @ 02f40de0] max_analyze_duration 5000000 reached at 5003389

その後

LAV Splitter の新しめのバージョン(Ver.0.51.3)で試したら、上のエラーは出ない代わりに 2ch 音声を 6ch 扱いして正常でない音声データが出力された。仕方ないのでこの作業の時は Ver.0.35 を使うようにした。どのバージョンからこうなったのかは試してないので不明。

3. 音声部分をファイル出力する

再エンコードしたくない場合

再エンコードする場合

wavi m2ts.avs sound.wav
neroAacEnc -lc -br 128000 -if sound.wav -of sound.aac

4. x264 で映像部分をエンコードする

AviUtl を使う場合

コマンドラインで直接 x264 を使う場合

x264 --level 4.1 --direct auto --tff --nal-hrd vbr --vbv-maxrate 62500 --vbv-bufsize 78125 --sar 1:1 --output video.mp4 m2ts.avs

5. 映像と音声を MP4Box で結合する

AviUtl + x264guiEx を使う場合はこの手順は不要。

MP4Box -add video.mp4 -add sound.aac -new target.mp4

まとめ

あなたの環境でうまく行かなかった場合は御容赦下さい。

奥付

system revision 1.162