今まではTSの5.1ch(aac)番組をエンコする際、BonTsDemuxで扱いやすい2ch(wave)に変換することでとりあえずのmp4動画へとしてきていた。
だが今回、BS2の劇場版カードキャプターさくらが5.1chで放送されたことをきっかけに、5.1ch音声のままmp4コンテナに収めることも覚えておいた方がいいなということで今回の思索。
そもそも自分の環境では5.1chくらいはかなり前から揃っていたのだが、地デジでは5.1chソースが少ないこと、また5.1chでもその効果が微妙な作品が多かったことから、あえて調べようとすらしていなかったのがこれまでの現状で、もっぱらPS3やXbox360のゲーム専用と成り下がっていた。しかしこのカードキャプターさくらは、アニメながらに四方八方から音が出る出るwこれはそのまま残すべき、と思わせるだけの力があった。
さて本題に入る前にちょっとわからないことがあったので調べてみたのがこちら↓
①何よりmp4コンテナに5.1chのマルチチャンネル音声が格納できるのか?
②出来たとして、2chPCで普通に再生できるのか?
③PS3ではちゃんと5.1ch再生されるのか?
①はちょっと調べたら、MP4boxの更新の中で格納機能がついたらしいことが判明。
②は普通にPCで視聴できること、③は5.1ch再生環境を活かすための手段が現状これしかなかったため、これが不可ならそもそもやる意味がない、ということで調べてみた。まあ検索段階ではあまり確証を得られなかったが、結果として②③もなんの問題もなかったことだけは先に明記しておくことにしよう(本記事トップに貼ったPS3再生画像参照、きちんと5.1ch出力されていることがわかる)。
ではここからが本題。
自分なりに色々と試した結果、最も有力な方法として以下の2パターンに落ち着いた。
[1] TSを映像部分を先にエンコ、音声部分は分離時に6つのwaveにsplitし、それぞれを映像の編集内容と同期。これをひとつの5.1ch(6ch)waveに格納し、そのままaacにエンコ。最後に映像部と結合(mux)。一般的にはこっち。
[2] PS3にてTSを再生し、PV4でキャプ。その際PS3側の音声出力設定でaacにチェックを入れておき、5.1chのままDVファイルに格納。AviUtlでエンコする際、x264guiにて音声出力をext_bs.exeにて処理してやれば、映像に合わせて編集済みの5.1ch音声(再エンコなし)がそのままmuxされる。BS2のようなSDものの場合は、PS3によるアプコンの恩恵も受けられるためこちらの方が有利。作業工程も[1]より圧倒的に少なく、[1]で上手く映像と同期が取れない時の最終手段としても重宝する。
でまあその方法だが、[1]から順に記載していく。
[1]1st TSの映像と音声をdemux
BonTsDemuxを使う。その際設定を変えて2回に分けてやっておくと吉。
最初がこちら。ほぼデフォルトの状態で、純粋に映像+音声に分離する。後の検証、保険として、ここでの出力音声は2ch:wave。
次がこちら。今度は音声のみで、メインの強制5.1ch(split)を選ぶ。なお最終的にどうしても映像と音声の同期が狂ってしまう場合、右側のVideo Frame補完にチェックを入れることで解決できることもある。今回のケースでは特にチェックを入れなくても同期出来たので、通常はノーチェックで良いだろう。同期出来ている状態でチェックを入れても悪影響でしかない。
[1]2nd AviUtlで映像部の編集
ここではメインではないためAviUtlの使い方やらx264でのエンコ方法やらは省くが、重要なのは以下の2つ。
・一応音声読み込みにて2ch:waveを読み込んで、映像と一緒に編集しておく。音声の波形表示にて映像と同期が取れているかも一応確認。
・一通りの編集が終わったら、エンコせずに編集プロジェクトの保存を行う。その後エンコを行うが、あえて映像のみにしないで、音声も一緒にエンコ→muxしてしまった方がいいように思う(保険的な意味で)。まあmp4のdemuxなんていつでも出来るし…。
[1]3rd splitした6つのwaveをそれぞれ編集
[1]2ndにて保存した編集プロジェクトを使う。まずはsplitした6つのwaveを見てみよう。ここではあえて入力ファイル(TS)の名前を“a”としておくと、
a-C.wav(定位:センター)
a-FL.wav(定位:フロントレフト)
a-FR.wav(定位:フロントライト)
a-LFE.wav(定位:ウーファー)
a-SL.wav(定位:サラウンドレフト)
a-SR.wav(定位:サラウンドライト)
という6つに分かれていると思う(それぞれの定位はカッコ内を参照)。
まずは[1]2ndの編集に使われたwave:2ch(仮に“a.wav”とし、上記6waveと同一のフォルダにあることを前提とする)のファイル名を“a-2ch.wav”とでも変更しておき(いらないようなら削除してしまっても構わない)、上記6つのwaveのどれかひとつのファイル名を“a.wav”に変更し、AviUtlで先ほどの編集プロジェクトを開く。
そこで「ファイル>WAV出力」を選び、オーディオ圧縮を選択。
上記のように設定(16ビット:モノラルPCM)し、ファイル名を元のファイル名(仮に“a-C.wav”を“a.wav”と変更して読み込んでいた場合は、“a-C.wav”)にして出力。これと同作業を6つのwaveすべてに行うことで、すべてのwaveが映像と同期した状態に編集されたことになる。
[1]4th 6つのwaveを1つの5.1ch(6ch)waveに格納
これにはBeSweet(リンクページ内右上のstable:安定版かbeta:ベータ版をクリックした先にてDL可)と、そのGUIツールであるBeLight(リンクページ内DownloadクリックにてDL可、バージョンはお好きなものをチョイス)を使う。とりあえずはDLしたBeSweet.exeをBeLight.exeと同フォルダに配置しよう。念のため、解凍したBeSweet.exeと同フォルダ内にあるすべてのファイルをBeLight.exeと同フォルダに移動させておくと吉。
BeLight.exeを起動したら、「Options>Language>Japanese」で日本語表示にしたあと「ファイル>多重化ファイルの作成」をクリックし、上記のウィザードを表示させる。出力形式の選択で「WAV」を選択し、「この.muxファイルを入力ファイルとして自動的に読み込みます。」にチェック。あとは右上の図のFL、C、FR、…をそれぞれクリックし、[1]3rdで編集した該当ファイルを各々指定。「保存」をクリックし、出力先と出力ファイル名(“a-5.1ch.mux”とでもしておけばよい)を決めたら「OK」を押す。
上の四角いスペースにチェックの入った状態で先ほどのmuxファイルが登録されているはずなので、上の画像ように設定(左側の設定はお好みで、ノーチェックでもOK)し、「処理開始」を押せば、先ほど設定した.muxファイルと同名の.wavファイル(上記の例だと“a-5.1ch.wav”)が出力される。なおこの先のMP4boxやneroAACEncでもそうだが、ファイル名やフォルダ名が日本語だったりすると上手く処理できない(読み込めない)可能性が高いので、その場合は上記例のようにファイル名を“a”などとし、デスクトップにでも“test”などの簡易的な臨時フォルダを作ってそこにコピーしてやるといいだろう。
※今回はwave出力→aacへと変換(次の[2]5th)としたが、普通はBeLight(BeSweet)だけで5.1ch:aacに直接出力出来る。ただなぜか自分の環境ではaacがどうしても出力されなかったため、そうした人のための記事だと思ってもらいたい。普通に出力できる人はそちらでいいだろう。
[1]5th 5.1ch:waveを5.1ch:aacに変換
ここから先は簡単。neroAACEncを使ってそのまま上記で作成した5.1ch(6ch)waveを普通にaacエンコしてやれば、5.1chのaacが出来上がる。なおneroAACEncの使い方についてはこちらの記事を参照。
[1]6th 映像(mp4)と音声(5.1ch:aac)をmux
この際、[1]2ndで音声をすでにmuxしたmp4を作成していた場合は、(これも念のため)別フォルダにコピーしておき、MP4boxで音声と分離(demux)したのち、上記で作成した5.1ch:aacと再度結合(mux)する。MP4boxの使用にはYambを使うか、muxのみは先ほどと同様こちらの記事を参照。
[1]7th 完成と検証
これで5.1ch:aacなmp4が出来上がったと思う。しかし5.1chソースの編集は何かと同期ミスが起こりやすいようなので、出力されたmp4を再生して要チェック。もし同期が取れていないようなら、[1]1stのVideo Frame補完やAviUtlの音声の位置調整などを試してみよう。それでも解決しないようなら、素直にここでの5.1chは諦めて最初にエンコした2chなmp4で我慢しておいた方が賢明だろう。一応2ch:waveでもmuxしておいた方がいいと書いたのは、このためである。
ただ、それでもどうしても5.1chが諦めきれないという場合、もうひとつの[2]でなんとかなる場合もあるので、そちらも紹介しておこう。
[2] PV3/4を使う
FriioやPT1/2によりTSそのものの取り込みが可能になる以前、大変重宝がられたアースソフトのPVシリーズ。それが今回も活躍する。
このPVシリーズ、音声の通常デコードはwaveで取り込んだものにしか対応しないのだが、長年の台頭から数々の便利なソフトが登場し、ビットストリーム出力(TSならaac出力)された音声を格納したDVファイルからも、そのままaacを取り出すことが可能となっている。それを利用したのがこの方法。
使うのはおなじみAviUtlとx264guiのセット、それにext_bs.exeによる処理を加えてやることで達成する。ext_bs.exeの使い方はx264guiがGUIの役目も果たしてくれるので、こちらで設定してやれるだけでOK。
右側の音声設定で、エンコーダに「PVシリーズ AAC分離用」を選択し、ext_bs.exeの場所を指定してやればいい。あとは普通にx264エンコすれば、自動的に音声のmuxまで行ってくれる。当然5.1chなら5.1chのままで、しかも編集も反映されるので、どちらが楽かと言われれば文句なしに[1]よりこちらだろう。前にも述べたが、特に今回のようなBS2というSD映像の場合、PS3を用いることができるこちらの方がすべてにおいて有利なように感じている。
また仮に[1]で映像との同期が取れなくても、こちらでは再生機側がきちんと再生さえしてくれれば問題ないため、改善される可能性が極めて高いという点も特筆すべき事項だろう。
以上、よりオーソドックス方法として[1]を中心に書いてきたが、「あくまでPV3/4を持っていれば」という前提が必要となるものの、「より手軽に」という観点からなら[2]の方が実は現実的かもしれないという結論に。TS時代となった今でも、PV3/4は何かと使い道があることを再確認した今回の思索。PT1/2含め、時代は変わってもアースソフト様々である。
(2010/7/31追記)
どうせできないと思っていたのでやらなかったが、やってみたら5.1chAC3も普通にMP4コンテナに格納でき、またPS3とMPCでも再生できることを確認した。
WAVEは4GB制限があり、2時間を超える映画などには上記の方法では対応できないことがある(BeLightがRF64をサポートしていない?ことから、1つの5.1chWAVEファイルにする段階でぶつ切りになってしまう)ため、どうしても対策が打てないようならBeLightの段階で5.1chAC3にしてしまうのも手かもしれない。
最近のコメント