2022.02.21
KlakNDI のオーディオ送受信対応フォークをありがたーく使わせていただいているのだが NDI Bridge を通すとなぜか音がプチプチ途切れる感じになってしまっていまいちちゃんと実装されてないので修正できたあかつきには修正版を公開したい所存。
KlakNDI のオーディオ送受信対応フォークをありがたーく使わせていただいているのだが NDI Bridge を通すとなぜか音がプチプチ途切れる感じになってしまっていまいちちゃんと実装されてないので修正できたあかつきには修正版を公開したい所存。
KlakNDI オーディオ送受信フォークと NDI Bridge の組み合わせがよろしくない問題は送信フォーマットの問題ではなく Unity から一度に送信するデータ量が少なすぎたためだったらしく DSP Buffer Size を Best performance (2048 samples) に変えたら問題解消したのだけどちょっと予想してたとおり Unity 内部でのオーディオ処理全体のレイテンシーがデカくて映像と 0.5 秒ぐらいズレてるように見えてしまってどうしたもんかなーとググってたらまたしても keijiro 神の LASP という低遅延オーディオライブラリを発見したので NdiSender に組み込んでみたらズレが解消したようにみえるのでもう少しテストして実アプリに組み込む。
KlakNDI + Lasp でオーディオレイテンシー問題は解決したかに思えたのだが実アプリに組み込むと音飛びが発生して使い物にならないことがわかったけどまあなんとなくあり得るかなーとは思ってはいてやっぱりって感じでそもそも Lasp は audio reactive な映像を作るためのライブラリなので映像のフレームごとにオーディオデータを取得する仕組みになってて過負荷でフレームレートがさがるとバッファーがあふれて取りこぼしたりするんだろうなーどうすっかなーと Lasp のソースながめてたら内部で libsoundio が低遅延オーディオを担ってることがわかって直接 libsoundio をつかえばフレームレートに依存せずにオーディオ送信できそうなのでやってみたらいちおうできたっぽいのであとは実アプリに組み込んで高負荷時にどうなるかってところ。