ちょっと躓いていたのでメモ。
PCx1台(サラウンドボード内蔵)で動画とマルチトラック音声を同期再生(6chあるうちの4chのみ使用したい)&
透過チャンネルありの動画をUnityで取り込み&再生するためのに条件あり。
Quicktime MOVでは重いので、WebMを選択。WebMはVP8とVP9のコーデックがあるが、UnityはVP8に対応しているそう。
音声コーデックは、Vorbisなら問題なく再生されるとのこと。(opusの方が音質が良いらしいが、再生がちゃんとできないみたい。)
上記、最終必要な設定をまとめると
WebM VP8,Vorbis 5.1ch
となる。
さて、ここで問題になっているので書き出し方でWebMへ書き出すには
①PremierePro + WebMプラグイン
②FFmpeg
③Shortcut Video Editor
の3つが取り急ぎ候補としてあげられる。
使用する4chは、L、R、RL、RRとしていた。
下記、なんとかならんかと試してみたことを順番に記載。
動画制作はPremiereProで完パケするため、①でWebMに書き出しできるのが望ましい
が、このWebMプラグインの書き出しで、"Dolby5.1"というオーディオ設定があるのだが、Vorbisの5.1chの仕様が今回つまづいているポイントっぽい。
(他はモノラルかステレオしかない。)
というのも通常 .mp4&aacなどで書き出しをしている5.1chのトラック順(L,R,C,Lef,RL,RR)と違っているよう。
この並び順はまだ判明していないが(おそらく、L、C、LEF、RL、R、RR)、デコーダー次第で音声出力の経路が変わってしまっている。
WindowsMediaPlayerとUnityで、6out音声出力の経路が変わっているため、そんな気がしている。
下記リンクに似たようなことが書かれている。
また、一般的にRRに割り当てたチャンネルがLEFとして圧縮されるため、低音域しか音が残っておらず使い物にならない。
"5.1ch"というよりかは、"6ch"で出したい。
これは、オープンソースのソフトウェアで良くできている。
FFmpegフレンドリーな感じで、書き出し時にコマンドも追記できる。
これも同様にダメでした。
とあらば、PremiereProで完パケの一発書き出しは無理として
①PremierePro + WebMプラグインで動画のみ書き出し、WAVもしくはAACオーディオでマルチチャンネル音声のみ書き出し
②FFmpegにてエンベデッド処理
という作戦に出た。
が、これもうまくいかず。
Vorbisにエンコードする段階で、RRがLEFとして変換されているよう。
FFmpegで結合する際は、-mapでストリームを指定してあげる必要がある。
あと、ビットレート等の品質設定をしないと自動でガビガビ設定で書き出しされてしまうため注意。
Unity上ではちゃんと再生されず…
書き出した4ch WAVをFFmpegで結合しようとしたが、音声トラックがのっていない。
そういえばと思い出したので使ってみたところ、Vorbisの音声書き出し設定に4ch(サラウンド)とかの項目があったのでいけるかもと思ったが、
上記と同様に音声トラックがのっていない状態のwebmが書き出しされたため、うまくいかず。
(5.1ch書き出しはうまくできていました。)
望み薄で試してみたが、ダメでした。
そもそも、Vorbisのライブラリlibvorbisは2017年くらいの1.3.7で開発が止まっており、Opusの方が更新が進んでいるようだ。
おりました。2014年時に同じ問題にぶち当たっている人。まさかReaperのポストに探していたものがあったとは。
Opusでも報告されているじゃないか…
これで、ひとまずおかしいことに確信を持てました(前進はしてない)
これまで、RRのチャンネルがLEFとして変換されてしまうためうまくできていなかったが、
LR、RR⇒C、LEFに割り当てらているところに配置するとどうだろうかと。
これも問題ありで、Windowsのサウンド機能(おそらくRealtek)で自動で5.1chにサラウンド処理されてしまっている…
つまり、書き出し時のRR⇒LEFにあたる部分はデータ上で圧縮されているが、C⇒LEFにあたる部分(データ上は圧縮されずに残っている)が
Windowsのサウンド機能上で勝手にLEFとして変換されて出力されるため、”ボスッ”って音がなる。(そうじゃないんだよぉ。)
R⇒Cにあたる部分は、音が半減されてるっぽいし。
ただ、サウンドデバイスのプロパティにて、"拡張機能を使う"みたいなチェックボックスを外したところ問題なく再生されました!
ちょっと無理やりでしたが、これでなんとかできそうです。
最終手段として、他に思いついた方法としては
アルファチャンネル付きwebm&マルチチャンネルWAVファイルに分けて再生
⇒素材数が増えると設定が大変そうでイヤ…
Unity上で音声ルーティングなどの処理
⇒開発チームの検証&作業工数が増えそうで頼みづ…
ASIOの外部サウンドボード
⇒そもそも機器の構成をこっちにしておけよなって話になるので…
他にも色々とチャレンジしてみましたが、割愛しておきます。
ほぼ1日、これでつぶれました。
⇒VP9の記事だが詳しく書かれているので分かりやすい。