なんかいろいろしてみます

Feb 8, 2019 - 1 minute read - HoloLens

UWP環境でのWebRTC導入方法

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
  • ただし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.propsPeerCC-Sample/Client/UnityCommon.propsをテキストエディタで開きます.
    • 中の...\Editor\Data\PlaybackEngines\MetroSupport\の部分を自分のUnity環境に合わせて変更します.
    • 作成したいUnityのUWP形式(D3D or XAML)に合わせてPeerConnectionClient.WebRtc.UnityD3D.slnPeerConnectionClient.WebRtc.UnityXaml.slnを開きます.
    • ビルドを行うとUnityプロジェクトにPluginが生成されるのでPeerCC-Sample/ClientUnity/Unity/PeerCCUnityをUnityで開きます.
    • Unityプロジェクト読み込み時にOrg.WebRtc.dllOrg.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クライアントアプリ同士,クライアントとサーバーアプリ,クライアントアプリ内の設定