Last updated on

WoLNamesBlackedOut OBS配信対応を考える


WoLNamesBlackedOutも随分安定してきたので

あまりフィードバックを頂けてはいないのですが、おかげさまでアプリも安定してきましたし処理速度も上がってきたので、そろそろOBS対応を考え始めてもいいのではないか?と思ったりしています。

OBS対応は、OBSプラグイン化を考えていたのですが、開発のハードルが結構高そうなのと、ライセンスの利用条件からNVIDIAのライブラリは利用できなさそうなのがネック。

では現在のアプリの形のままOBS対応できないか?と考えたところ、アプリで利用しているffmpegは、RTMPストリーミングプロトコルの入出力に対応しているので、入出力を動画ファイルの代わりにRTMPのアドレス指示すればできそうな気もします。OBSも同様にRTMPに対応しているので、現状のアプリをRTMP対応できるように少し修正すれば実現できそうですが、別途RTMPサーバーが必要になりそう、というのがユーザー目線ではちょっとめんどくさそうです。

そのあたりのそれぞれのメリット、デメリットなどをまとめておこうと思いました。

実現方法

メリット

デメリット

OBSプラグイン化

現在のアプリのコードをOBSプラグインに合わせた形で再実装する。
コードが公開してあるOBS-DETECTに移植する形が私の技術力から考えると現実的か?

  • OBSプラグインなので、実現できればOBSだけで黒塗り処理と配信が実現できる
  • OBSプラグインはソース開示が必須のGPLライセンス。TensorRTやCUDAなどのNVIDIAはソース開示不可が利用条件のため、静的リンクができず利用が難しい。DirectMLでのみの黒塗り対応となる可能性が高い。
  • 仮にOBS-DETECTに移植するとしても、私の技術力的にOBSプラグイン開発はハードルが高そう

現アプリのRTMP入出力対応

現在のアプリで利用しているffmpegにRTMP入出力のアドレスを渡せるように修正する。
ユーザにおいてOBSでもRTMPを入出力するように設定してもらうことで、ソースのMIXや配信はOBSで、黒塗り処理は現アプリで行う

  • アプリの修正が少なく実装しやすい。
  • TensorRT、CUDAなど現アプリの実装のまま利用可能
  • OBSと現アプリでRTMPでやり取りできるようにするには、別途RTMPサーバをユーザで準備する必要がある
  • ローカルPCやローカルLAN内でRTMPでやり取りが必要になりOBSプラグインよりも追加負荷が発生する。

さて、どうしよう?

1台のパソコンで、FF14をしながらOBS-detectで黒塗りしながら配信を以前実施してみました。
当方の環境で30FPSでなんとかできなくもない感じでしたが、ムービーやダンジョン終了後はなぜかGPU負荷大きく処理が重たくなるので、微妙に厳しい感じもしました。

配信する人は、配信用のPCが別途あったりするんですかね?
配信用のPCに何かしらGPUがついていれば、上記の案のどちらにしても30FPSくらいで快適に黒塗り配信できるのではないか?と想像しています。

RTMPサーバー機能を配信用PCに立てるのがどれくらいハードルが高いのか?によるのかなー
OBSプラグイン化の方がシンプルでええんかなー?

配信する人の環境などもよくわからないので、ニーズがあれば検討する、という感じかな?
どっちも実装すれば?と言われると、え?あ、はい・・・感