BD -> mp4(H.264)にエンコード Windows7 64bit

Blu-ray Discはcodecとして、MPEG2 と H.264VC-1の使用が認められているので
どのcodecを使用しているかによってAviUtlへの読み込ませ方が違ってくる


AC3 5.1ch -> AAC 5.1chってチャンネルアサイン全然ちがうのね!詳細は次の見出しで


MPCHCにm2tsファイルを突っ込んで「プロパティ」->「詳細」or「メディア情報」からcodecを確認するのが一番楽です
tsMuxeR にm2tsファイルを突っ込めば、codecの種類及び、音声チャンネルの詳細(使用言語)及び、字幕データも確認できるのでこれが一番楽かな
(本編は大体一番大きいm2tsファイル)


ちなみにVC-1Blu-Ray VS HDDVD戦争の時に、MSがアメリカのスタジオにシステムをばら撒いたのでハリウッドのBDなどはVC-1コーデックのBlu-Rayが多いらしい
VC-1にしてもベースはH.264なので、システムリプレースのタイミングでH.264になりそうではありますが


用意するもの Verは現時点のモノ

//spring-fragrance.mints.ne.jp/aviutl/" target="_blank">AviUtl:Plug-in含めて説明省略
//www.videohelp.com/tools/DGAVCDec" target="_blank">DGAVCDec 1.0.9 or DGMPGDec 1.5.8:m2tsファイルからdgaと音声を分離する
//sourceforge.net/projects/avisynth2/" target="_blank">Avisynth 2.5.8:dgaファイルをAviUtlに扱わせる為に経由させる
AviUtlにPlugin導入要
AviUtl version 0.99k から、プラグインなしでも AVS ファイルを開けるようになりました
//sox.sourceforge.net/" target="_blank">SoX (Sound eXchange) 14.3.1:pcm(LPCM)をwavに変換
//www.videohelp.com/tools/eac3to" target="_blank">eac3to 3.24:ac3またはdtsをwavに変換
//www.videohelp.com/tools/mp4box" target="_blank">mp4box 64bit 0.4.6 rev2485 64bit Verでも2GB以上のファイルを扱うと Out Of MemoryになるBugあり
mp4box 0.4.6-DEV internal rev. 7 (2010.10.03):mp4とaacをmuxする
一応コチラにもあり (32bit/64bit)
//www.videohelp.com/tools/tsMuxeR" target="_blank">tsMuxeR 1.10.6:m2tsファイルから字幕の抽出
//www.videohelp.com/tools/BDSup2Sub" target="_blank">BDSup2Sub 4.0.0:抽出した字幕ファイル(sup)をAviutlで扱えるようにidx+sub形式に変換
//forum.doom9.org/showthread.php?t=128943" target="_blank">VC-1 ES to AVI Multiplexer 1.0.1:VC-1をAVI Streamに変換
//sourceforge.net/projects/virtualdubmod/files/" target="_blank">VirtualDubMod:分割されたAVIファイルを結合する
//neuron2.net/dgdecnv/dgdecnv.html" target="_blank">DGDecNV:CUDA版 DGAVCDec (VC-1対応)
有料でCUDA対応VGAで無ければ使えないが、DGAVCDecと同じように使える
//sourceforge.net/projects/guliverkli/files/VSFilter/" target="_blank">VSFilter:字幕を載せる場合に



H.264の場合

  1. DGAVCDec (DGAVCIndex)を起動して [File] -> [Open] でm2tsファイルを読み込む
  2. [Video] -> [YUV->RGB] で [TV Scale] を選択する
  3. [Stream] -> [Detect PIDs: PAT/PMT] を選択してPID一覧を表示させる
  4. [PCR on PID ...] を選択して [Set PCR] を実行、[AVC Video on PID ...] を選択して [Set Video]を実行し、[Done] を実行する

  5. [Audio] -> [Audio Demux] を選択するとチャンネル一覧が表示されるので、抜き出すチャンネルを選択して [Set] を実行し [Done] を実行する

  6. [File] -> [Save Project] で保存実行すると、 dgaファイルと pcm or ac3 or dtsファイルが作成される

  7. 音声ファイルがpcmの場合、SoX (Sound eXchange)で pcm -> wavに変換する
    5.1ch
    c:\util\sox\sox -B -r48000 -t .raw -c6 -2 -s "in.pcm" "out.wav"
    2ch
    c:\util\sox\sox -B -r48000 -t .raw -c2 -2 -s "in.pcm" "out.wav"

  8. 音声ファイルがac3 or dts の場合、eac3toで av3/dts -> wavに変換する
    6.1ch/7.1chは自動で5.1chにされる
    c:\util\eac3to\eac3to "in.ac3" "out.wav" -1,0,2,3,4,5

  9. ac3/dtsから変換されたwavが、Extensible wave形式の場合、Aviutlでは扱えないのでバイナリエディタで修正する
    00000014: FE → 01
    00000015: FF → 00
    アドレスは前後する場合アリ

  10. wavファイルが4GBを越える場合は、AviUtlで扱えないので wav -> aac 別だしで変換して 後工程でmp4boxでmuxする
    C:\UTIL\AVIUTL\NeroAacEnc.exe -ignorelength -lc -br 192000 -if "in.wav" -of "out.aac"

  11. AviSynthファイルの作成
    dgaファイルと同じ場所に

    LoadPlugin("C:\UTIL\DGAVCDec\DGAVCDecode.dll") <- DGAVCDecode.dllの位置
    AVCSource("20100102061045.dga") <- dgaファイル名
    VobSub("20100102061045.sub") <-字幕の載せる場合指定 idxと同じファイル名で

    上記の内容でファイルを作成し、拡張子をavsで保存する

  12. AviUtlから avsファイルと wavファイルを読み込ませてエンコード(音声を別エンコードの場合、映像だけ)

  13. 音声を別でエンコードした場合、エンコードされた映像と mp4box でmuxする
    C:\UTIL\AVIUTL\MP4Box.exe -add "video.mp4"#video -add "audio.aac"#audio -new "movie.mp4"
    (映像のみ、音声のみの場合、#video/#audio不要)

MPEG2の場合
  1. DGMPGDec (DGIndex)を起動して [File] -> [Open] でm2tsファイルを読み込む
  2. [Audio] -> [Output Method]の[Decode AC3 Track to WAV]を選択する
  3. [Audio] -> [Select Track(s)]から出力したい音声トラックを選択する(洋画はTrack1が英語、Track2が日本語が多い)
  4. [Video] -> [iDCT Algorithm]で、[IEEE-1180 Reference]を選択する
  5. [File] -> [Save Project]で、d2v & wavファイルを出力する
  6. 出力された、d2v & wavファイルをAviutilに読ませてエンコード
VC-1の場合
DGDecNVが使える環境ならば、H.264の時とほぼ同様に行えるので省略
  1. tsMuxeR GUIを起動して [add] でm2tsファイルを読み込む
  2. 映像(VC-1)と音声、字幕(PGS)を選択して dumuxする
  3. VC-1 ES to AVI Multiplexer を起動し、vc1ファイルを読み込ませ AVI Streamに変換する
  4. AVIファイルは2GB単位で分割されるので、VirtualDubModで結合する
    VirtualDubModを起動し [File] -> [Open video file]で最初のAVIファイルを選択
    このときVC-1 codec(VFW)が無い為ワーニングが出るがかまわず進める。画面の表示が更新されないが読み込みはされているので問題はない
    [File] -> [Append segment...]で結合するファイルを指定する。この時ファイル選択画面の左下の [Autodetect additional segments by filename] にチェックが入っていると、ファイル名が連番になっていると最後まで自動的に読み込みを行う
    自動的に読み込みが終わると最下段のステータスバーに [Append * Segments (Stoppped at "ファイル名")]となるので、それで確認する。ファイル名は、このファイル名が無かったので追加を終了しましたという意味なので、注意
    [Video] -> [Direct Stream Copy]にチェックが入っている事を確認し、[File] -> [Save As]で結合したファイルを保存する
  5. 音声については H.264の時と同様に変換する
  6. AviUtlを起動して、AVIファイルを読み込ませてエンコード


字幕について
  1. 字幕が必要な場合 tsMuxeR でm2tsファイルを開き
    [codec] PSG / [lang] jpn の字幕ファイルにチェックを入れて [Output] Demux を選択して出力する
    字幕以外は不要なのでチェックを外す
    1つずつ Demux しないと後ろが切れる可能性があり
  2. 字幕ファイルを、BDSup2Sub.jar を使用し sup -> idx + subに変換
    [File] -> [Load] でsupファイルを選択して開く、[Edit] -> [Edit Frame]で、Frameを前後させて目的の字幕ファイルか確認する
    [File] -> [Save/Export]で出力する
  3. 後はDVDの時と同様にAviUtlで扱う
  4. VSFilter.dllをAvisynthの pluginフォルダに放り込み、avsファイルの記述を変更
参考 -> http://daikin.ddo.jp/2010/09/22


音声について
少し前の洋画は音声が小さめに録音されているので(86dB位)、AACエンコードした後
MP3Gain + AACGainで 93dBにあげてやるとよくなる


2010/12/28 追記
AC3 -> AACのチャンネルアサインで eac3toのオプション追記


2011/01/12 追記
eac3toでの変換はチャンネルアサインリマッピングは自動のようなので、オプション削除


2011/02/02 追記
字幕の抽出、変換について追記
mp4boxに64bitでも、2GB以上のファイルだと Out Of Memoryのバグがあるので修正


2011/02/04 追記
VC-1の場合について追記


2011/02/05 追記
少し前の洋画の音声は小さめに録音されているので、その対策を追記


2014/06/08 追記
字幕追加について、VSFilter + Avisynthに変更

5.1ch チャンネルアサインについて

どうやら、AC3とAAC及びwavの5.1chファイルのチャンネルアサインはバラバラらしい


AC3 5.1ch
1-FrontLeft
2-FrontCenter
3-FrontRight
4-RearLeft
5-RearRight
6-LFE


AAC 5.1ch
1-FrontCenter
2-FrontLeft
3-FrontRight
4-RearLeft
5-RearRight
6-LFE


WAV 5.1ch
1-FrontLeft
2-FrontRight
3-FrontCenter
4-LFE
5-RearLeft
6-RearRight


AC3 -> WAV -> AACとチャンネルアサイン変更に対応していないソフトで変換した場合 (AC3 -> AACでもいいけど)

AC3WAVAAC
FrontLeftFrontLeftFrontCenter
FrontCenterFrontRightFrontLeft
FrontRightFrontCenterFrontRight
RearLeftLFERearLeft
RearRightRearLeftRearRight
LFERearRightLFE
FrontCenterとFrontRightが入れ替わってしまう事に


eac3to and More GUIを使用して、AC3 -> WAVに変換する場合 Custom Channel Mappingを使用して
FL -> CH1 (FrontCenter)
FR -> CH0 (FrontLeft)
FC -> CH2 (FrontRight)
LFE -> CH3 (RearLeft)
SL -> CH4 (RearRight)
SR -> CH5 (LFE)
とすることによって、WAV変換時にAAC音声のアサイン順に並べ替える事ができるので
このWAVファイルをAACエンコードすればAC3 -> AACへのチャンネルアサイン変換も問題なく行う事ができる