WebRTCをHoloLensで使ってみたいと思いましたが,導入に手間取ったので手順を記録しておきます.
WebRTCの説明
- Web Real-Time Communication(WebRTC)とはウェブブラウザ間でのビデオチャット,ファイル共有をリアルタイムに行うためのAPI定義です.
- ウェブブラウザのAPI定義ですが必要な機能を実装を行えばブラウザ以外でも利用が可能になります.
- 現在では複数のブラウザ,デバイスで利用ができるようになっています.https://webrtc.org/
UniversalWindowsPlatformでのWebRTCの扱い
- UWP環境での動作は現在公式ではサポートされていません.
- WebRTC for UWPとしてUWP実行環境はMicrosoftが用意している https://github.com/webrtc-uwp
- 今回は
PeerCC-Sample
を利用 https://github.com/webrtc-uwp/PeerCC-Sample
- 今回は
- ただしUnity環境での動作は十分にサポートされていないです.(バージョンによっては動かなかったりする)
- VisualStudioのNugetを利用する形でUnity用プロジェクトを公開されている方がいました.UnityWithWebRTC
- 上記プロジェクトではUnityの3D空間での表示には対応していないため,上記プロジェクトを参考にしたプロジェクトも利用します.WebRtcPluginSample
サンプルプロジェクト利用方法
デスクトップUWP用WebRTCサンプル
ビルド環境
- Windows10
- VisualStudio2017
- Unity2017
サンプルプロジェクト
- PeerCC-Sample : https://github.com/webrtc-uwp/PeerCC-Sample
- UWPのXAMLビルドを実行できます.
PeerConnectionClient.WebRtc.sln
をVisualStudioで開きビルドします.実行すると以下の画像のように表示できます.
Unity用2Dアプリ
- D3DまたはXAML用にPluginを作成することでUnityのUWP環境で実行可能なサンプルを作成できます.
- プラグイン作成のために
PeerCC-Sample/ClientUnity/UnityCommon.props
とPeerCC-Sample/Client/UnityCommon.props
をテキストエディタで開きます. - 中の
...\Editor\Data\PlaybackEngines\MetroSupport\
の部分を自分のUnity環境に合わせて変更します. - 作成したいUnityのUWP形式(D3D or XAML)に合わせて
PeerConnectionClient.WebRtc.UnityD3D.sln
かPeerConnectionClient.WebRtc.UnityXaml.sln
を開きます. - ビルドを行うとUnityプロジェクトにPluginが生成されるので
PeerCC-Sample/ClientUnity/Unity/PeerCCUnity
をUnityで開きます. - Unityプロジェクト読み込み時に
Org.WebRtc.dll
とOrg.WebRtc.winmd
が削除されてしまう場合にはPeerCC-Sample/ClientUnity
から同じファイルをUnityにインポートしておきます. https://github.com/Microsoft/WebRTC-universal-samples/issues/40 - UnityからUWPビルドを行いHoloLensにインストールすることでUnityでのUWP実行が確認できます.
UnityUWP用WebRTCサンプル
ビルド環境
- Windows10
- VisualStudio2017
- Unity2017
- UWP用WebRTCはNugetからライブラリを導入しています.
サンプルプロジェクト(2D)
- UnityWithWebRTC : https://github.com/ritchielozada/UnityWithWebRTC
UnityWithWebRTC/ExternalProjects/WebRtcIntegration/WebRtcIntegration.sln
からXamlTestApp
をビルドすることでXAML形式のテストアプリを確認できます.WebRtcIntegration
のプロジェクトをビルドすることでUnity用DLLも生成されます.UnityWithWebRTC
をUnityで開きUWP用で開くことでUnityの2D用UWPアプリを作成できます.- 画像左下にテスト用UWPアプリ,正面にUnityの2D用UWPアプリをHoloLensで実行している様子
サンプルプロジェクト(3D)
- WebRtcPluginSample : https://github.com/dykarohora/WebRtcPluginSample
WebRtcPluginSample.sln
をVisualStudio2017で開きビルドを行うとUnity用のDLLが作成される.WebRtcPluginSample/WebRtcSampleUnityApp
をUnityで開きUWP用にビルドを行うと3D空間用Unityアプリが作成されます.- 画像にはパソコンでUnityWithWebRTCのUnityの2D用UWPアプリ,HoloLensでWebRtcPluginSampleのUnity3D用UWPアプリを実行している様子
- 一部HoloToolkitのdllが不足して実行できない場合があるので,MixedRealityToolkit-Unityから不足しているPluginのdllをインポートしてください.
まとめ
- なかなか動いてくれない
- 組み合わせによっては正常に動作しない場合があります.
- UWPクライアントアプリ同士,クライアントとサーバーアプリ,クライアントアプリ内の設定