#2021/3/25 補足
MixedReality-WebRTC の Version が2系になった時に、ファイル構造・導入手順が変更されました。
こちらの記事を参考にする場合は1系(1.0.0 ~ 1.0.3)をお使いください。
https://github.com/microsoft/MixedReality-WebRTC/releases
#はじめに
WebRTCはウェブブラウザやモバイルアプリケーション間でのリアルタイム通信を可能にするものです。
オープンソースのプロジェクトであり、APIが公開されています。
HoloLensで利用するにあたって、今回はHoloLensの開発元であるMicrosoftが提供しているプロジェクトを利用しました。
webrtc-uwp-sdk
https://github.com/webrtc-uwp/webrtc-uwp-sdk
MixedReality-WebRTC
https://github.com/microsoft/MixedReality-WebRTC
#準備
・Visual Studio 2019
・Unity 2019以降
・Node.js
・以下リポジトリのクローン
https://github.com/microsoft/MixedReality-WebRTC
https://github.com/bengreenier/node-dss
#導入
###リポジトリのダウンロード
master branchをclone
https://github.com/microsoft/MixedReality-WebRTC
(zip形式の保存はファイル欠損が出るので, cloneで行います. 10GB程度の空き容量が必要になります)
###ビルドの準備
以下URLに沿って実行する
https://microsoft.github.io/MixedReality-WebRTC/manual/building.html
・rootディレクトリのMicrosoft.MixedReality.WebRTC.slnをVS2019で起動
・上記の設定でプロジェクト全体をビルド
HoloLens1であればx86, HoloLens2で利用する場合はターゲットをARMに変えます
いくつかエラーと警告が出るが、ビルドが通れば先へ進む
MixedReality-WebRTC-master\libs\Microsoft.MixedReality.WebRTC.Unity\Assets\Microsoft.MixedReality.WebRTC.Unity.Examples\VideoChatDemo
をUnityで開く
Build Settingsは以下のように設定
###ローカル映像取得
WebRTCを実行するためのシグナリングサーバを用意します。
node.jsコマンドプロンプトを起動し、予めダウンロードしたnode-dssのディレクトリに移動
以下コマンドを実行
cd node-dss
set DEBUG=dss*
npm install
npm start
コマンド実行後にUnityでシーンを再生する
成功していればWebカメラでローカルの映像が表示される
node.js側にはログが表示される
###リモート映像取得(Unity - Unity)
2台のPCを使うことで相互に映像を取得できる
上記で利用したPCとは別のPCで同じプロジェクトを実行できる環境を作る
作り終わった後に, 同じ手順でローカルのデータが取れるかを確認
確認後、双方でnode-dssを実行
2台分, /data/以降の文字数列をメモ
(例えば, 上記ログの場合だと8bce5f31a0fcfa8e14380b224c00e2d1)
Hierarchyを開き、PeerConnection内のNodeDssSignalerを編集する
Remote Peer Idは控えた文字数列を入力
Http Server Addressは、
http://127.0.0.1:3000 → http://接続先ネットワークのIPv4アドレス:3000に変更
双方で再生ボタンを押し、CreateOfferすると、リアルタイムの映像が出力される
ログから双方で通信が行われていることが分かる
###リモート映像取得(HoloLens - Unity)
編集中
###トラブルシューティング
Microsoft.MixedReality.WebRTC.slnがビルドできない
→ VS2019でビルドしているか確認
→ ターゲットの変更etc
(https://microsoft.github.io/MixedReality-WebRTC/manual/building.html)
ローカル映像取得ができない
→ Webカメラ、ネットワークの権限を許可しているか
→ Microsoft.MixedReality.WebRTC.slnのビルドはできているか、できていなければ再ビルド
→ node.jsでシグナリングサーバを立てているか
リモート映像取得ができない
→ ネットワークを127.0.0.1のままにしていないか
#さいごに
HoloLensにWebRTCを導入することで遠隔操作の支援・ビデオ通話など様々な分野での利用が可能になります。
今回利用したMixedReality-WebRTCはPUBLIC PREVIEWではありますが、HoloLens開発におけるWebRTC導入を容易にしてくれるものとなっています。