WebRTC SFU + VR による音声+モーション超低遅延配信

V
4 min readJul 7, 2018

追記

WebRTC 向け Unity SDK を自社で開発し、自社で維持するコストが高すぎるのと、サポートコストが見合わないと判断し Unity などを利用した VR の分野には投資をしない事を決定した。

金額面、技術面の両方で自分が期待している市場にはなっていないと判断した。

原文

事前に伝えておきたいが、VR まったくわからない、さらに VR を体験したことはない。それを踏まえて読んでほしい。間違いは気軽に指摘してほしい。

なんだか最近 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 モーションデータと音声の配信

WebRTC SFU + VR (1:N)

配信はこのような感じになると考えている。視聴クライアントはまずは 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 の実装はそこそこ大変だろうから、時間をもらうだろうが年内には実現できると思う。早ければ秋までには。

興味がある方は是非この記事に拍手をしておいてほしい。期待はやる気に繋がる。

--

--