やったこと
最近公開されたSkyWayのWebRTC Gatewayを利用して、WebRTCの映像をUnityでレンダリングしてみました。
具体的な実装方法についてざっくり記載します
=> 2018/7/13追記: ソースコード公開して解説記事を書きました。 https://qiita.com/nakakura/items/a99c468c56db2a92b32f
SkyWay WebRTC GW使ってブラウザからUnityに動画流し込み成功した。
— るんばにゃん (@arukakan) 2018年7月10日
リファクタしたらライブラリ化しよう。 pic.twitter.com/rFORJ55Dlc
実装
Unityへのテクスチャ取り出しについては、MHD Yamen Saraiji氏のmrayGStreamerUnityを利用しました。Thanks Yamen!
mrayGstreamerUnityはその名の通り、gStreamerというオープンソースアプリケーションで処理する動画データをUnityのテクスチャとして取り出すためのUnity Pluginです。
gStreamerを利用すると動画をRTPで送受信することができるため、別の端末から映像を配信してUnityで描画することができます。
平たく言うと、RTPで動画を送ればUnityのテクスチャを生成してくれる便利なUnity Pluginとして利用することができます。
ここでSkyWay WebRTC GWを利用します。
SkyWay WebRTC GWはMediaStreamで受け取ったメディアをRTPで外部に転送してくれる機能があります。
これを利用して、mrayGstreamerUnityの受信ポート宛に転送してやれば描画してくれます。
SkyWay WebRTC GWはDataChannelも扱えるので、Unityアプリケーション間でのデータのやりとりも可能です。
UDPでデータの送受信をしてやれば、Unity間でインターネット経由でのチャットやデータ転送も可能です。
できるようになったこと
- UnityアプリケーションからのWebRTC利用(インターネット越しの映像・音声通信・データ転送)
- Unityアプリケーションとブラウザ間でビデオ通話
- Unityで作ったVRアプリケーション間で通話
例えば、VRゲームの途中で、メタルギアソリッドの無線みたいな感じで通話できるようになる。
ARアプリケーションでリアルタイムにナビを行える。etc.
公開について
まだソースコードがきちゃない状態なので、整理したあとUnity Pluginとして公開しようと思っています。