Help us understand the problem. What is going on with this article?

HoloLensでWebRTCを利用する

はじめに

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で起動
image.png
・上記の設定でプロジェクト全体をビルド
HoloLens1であればx86, HoloLens2で利用する場合はターゲットをARMに変えます
いくつかエラーと警告が出るが、ビルドが通れば先へ進む

MixedReality-WebRTC-master\libs\Microsoft.MixedReality.WebRTC.Unity\Assets\Microsoft.MixedReality.WebRTC.Unity.Examples\VideoChatDemo
をUnityで開く
image.png
Build Settingsは以下のように設定
image.png

ローカル映像取得

WebRTCを実行するためのシグナリングサーバを用意します。
node.jsコマンドプロンプトを起動し、予めダウンロードしたnode-dssのディレクトリに移動
以下コマンドを実行
cd node-dss
set DEBUG=dss*
npm install
npm start
コマンド実行後にUnityでシーンを再生する
成功していればWebカメラでローカルの映像が表示される
無題.png
node.js側にはログが表示される
image.png

リモート映像取得(Unity - Unity)

2台のPCを使うことで相互に映像を取得できる
上記で利用したPCとは別のPCで同じプロジェクトを実行できる環境を作る
作り終わった後に, 同じ手順でローカルのデータが取れるかを確認
確認後、双方でnode-dssを実行
2台分, /data/以降の文字数列をメモ
(例えば, 上記ログの場合だと8bce5f31a0fcfa8e14380b224c00e2d1)

Hierarchyを開き、PeerConnection内のNodeDssSignalerを編集する
image.png

Remote Peer Idは控えた文字数列を入力
Http Server Addressは、
http://127.0.0.1:3000 → http://接続先ネットワークのIPv4アドレス:3000に変更
双方で再生ボタンを押し、CreateOfferすると、リアルタイムの映像が出力される
無題.png
ログから双方で通信が行われていることが分かる
image.png

リモート映像取得(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導入を容易にしてくれるものとなっています。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away