なんだか最近 VR 関連の相談が多い。なんだなんだと話を聞いてみると、VR で利用する情報を配信する仕組みがほしいらしい。
VR で利用する配信は音声、あとはモーションデータと呼ばれる情報らしい。おそらくバイナリデータなのだろう。これらを多人数に超低遅延で配信したいという要望が多い。
自社製品は WebRTC SFU という音声と映像を遅延 200 ミリ程度で配信するサーバ型の製品だ。
簡単に言えば 1:N の N の部分をサーバが代理してくれる。弊社製品を利用すると 1:300 程度までは音声や映像を配信可能になる。
音声はこれで解決する。ただモーションデータはどうするか。
実は WebRTC には DataChannel という技術がある。これは音声や映像とは別に、本当にデータ、つまりバイナリデータを送ることができる技術だ。
この技術は SCTP over DTLS over UDP という中々複雑なプロトコルで出来ている。DTLS over UDP までは実装しているので、SCTP に対応させれば完了となる。
現時点で自社製品は DataChannel に対応していない。理由は簡単で今までそんな高速にデータのやり取りをする必要はないと考えていたからだ。WebSocket で十分だろう、と。
ただ VR では顔の表情から、動きまでをモーションデータという形式で配信したいらしい。もちろん遅延は少なければ少ないほうがいい。
つまり WebRTC SFU 経由の DataChannel が求められる時代が来た。
ということでここからは、実際 WebRTC SFU に DataChannel が実装されるとどうなるのかという話を書いていきたい。
WebRTC SFU での VR モーションデータと音声の配信
配信はこのような感じになると考えている。視聴クライアントはまずは 300 クライアント程度。これは 1:N だが 5:N のように配信側を増やすことも可能になる。例えば複数の配信者が一画面に登場することも可能になる。
WebRTC Unity SDK
使う側は、おそらくこれが欲しくなるはずだ。安心してほしい。自社は SDK にかなりのリソースをつぎ込んでいる。SDK のノウハウはたくさんある。
ただ残念ながら Unity のノウハウはないので、おそらく社外の詳しい人と組んでやることになるだろう。
WebRTC SFU + VR で双方向配信
適当に作った図なのでわかりにくくて申し訳ない。 3 クライアントで双方向でやりとりする。おそらくだが最大 30 クライアントであれば余裕で耐えられると思う。50 クライアントまでいけたら面白そうだ。
多段
図は省略するが、WebRTC SFU 自体を多段にすることでより多くの配信を可能にする技術だ。1:500 を 1:5000 にする。実際実現は可能で、遅延もほとんど気にならないレベルだった。
まとめ
WebRTC SFU + MediaChannel(音声) + DataChannel(モーションデータ) + Unity SDK = VR は色々な課題を解決しそうである。
自社はフルスクラッチで開発している WebRTC SFU を持っている。実績は多数で安定的な配信を実現している。そこに DataChannel での配信機能を実現し、Unity SDK を提供できれば、VR にも WebRTC を利用した技術を広めることができるのではないだろうか?
であれば、実装したい。DataChannel の実装はそこそこ大変だろうから、時間をもらうだろうが年内には実現できると思う。早ければ秋までには。
興味がある方は是非この記事に拍手をしておいてほしい。期待はやる気に繋がる。