SlideShare a Scribd company logo
1
Magic Leap で
WebRTC
触ってみた
Nisho Matsushita | HoloLab Inc. | Magic Leap Ambassador | 2021.4.15
ARヒノボル @liketableteninu
2
WebRTC の基本
01
WebRTC とは?
3
WebRTC (Web Real-Time Communication) は音声や映像を取り込
み、ストリーミングしたり、アプリケーション間で任意のデータを交換し
たりすることを、仲介者を介さず (P2P) にリアルタイムで可能にする
技術 (OSS) です。
WebRTCを構成する一連の標準規格は、ユーザがプラグインやサー
ドパティ製のソフトウェアをインストールすることなく、P2Pでデータの
共有や電話会議することを可能にしています。
Magic Leap “Unity WebRTC Guide” より引用・翻訳
WebRTC を採用しているコミュニケーションツール
Google Meet Facebook Messenger Discord
WebRTC を実現するための構成例
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
P2P 確立前の通信 P2P 確立後の通信
① ①
②
WebRTC の P2P 通信を開始するための情報
SDP (Session Description Protocol)
マルチメディア(映像、音声)の解像度、フォーマット、コーデック、暗号化、port番号、IP
アドレスなどの情報をまとめて記述する方式
ICE (Interactive Connectivity Establishment)
P2P 通信の経路決定、特に NAT やファイヤーウォール越えのために必要な情報
P2P通信が開始されるまでの流れ
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
サ
ー
バ
接
続
サ
ー
バ
接
続
P2P通信が開始されるまでの流れ
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
サ
ー
バ
接
続
P2P通信が開始されるまでの流れ
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
createOffer()
P2P通信が開始されるまでの流れ
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
createOffer()
SDP
offer
P2P通信が開始されるまでの流れ
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
setLocalDescription()
SDP
offer
SDP
P2P通信が開始されるまでの流れ
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
SDP
offer
P2P通信が開始されるまでの流れ
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
SDP
offer
SDP
P2P通信が開始されるまでの流れ
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
setRemoteDescription()
SDP SDP
P2P通信が開始されるまでの流れ
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
createAnswer()
SDP
SDP
P2P通信が開始されるまでの流れ
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
createAnswer()
SDP
answer
SDP
SDP
P2P通信が開始されるまでの流れ
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
setLocalDescription()
SDP
answer
SDP
SDP
SDP
P2P通信が開始されるまでの流れ
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
SDP
answer
SDP
SDP
SDP
P2P通信が開始されるまでの流れ
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
SDP
answer
SDP
SDP
SDP
P2P通信が開始されるまでの流れ
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
setRemoteDescription()
SDP
SDP
SDP
SDP
P2P通信が開始されるまでの流れ
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
ICE candidate
onicecandidate()
SDP SDP
SDP
SDP
ICE candidate
onicecandidate()
P2P通信が開始されるまでの流れ
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
ICE
candidate
SDP SDP
SDP
SDP
ICE
candidate
P2P通信が開始されるまでの流れ
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
ICE
candidate
SDP SDP
SDP
SDP
ICE
candidate
P2P通信が開始されるまでの流れ
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
ICE candidate
addIceCandidate()
SDP SDP
SDP
SDP
addIceCandidate()
ICE candidate
P2P通信が開始されるまでの流れ
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
ICE candidate
SDP SDP
SDP
SDP
ICE candidate
P2P確立!
P2P通信が開始されてから
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
ICE candidate
SDP SDP
SDP
SDP
ICE candidate
SDPに従って
音声、映像、データを
やり取り
27
MLWebRTC 入門
02
MLWebRTC
28
● WebRTC API を Lumin OS 用に使いやすくラッピングした C# API
● 提供されている API 例
○ P2P: connection の作成
○ SDP: local (offer/answer) の作成(と同時に設定)、 remote の設定
○ ICE: candidate の作成、 remote の設定
○ 映像: local/remote の stream の追加、 MRCamera 対応
○ 音声: local/remote の stream の追加
○ データ: テキストやバイナリデータの送受信
○ 各種イベント(P2P導通時、offer/answer作成時、映像音声データ受信時など)
● ただし
○ シグナリングサーバとの通信部分 は自分で実装する必要あり
MLWebRTC がサポートしている範囲イメージ
PC (Peer)
Magic Leap1 (Peer)
シグナリングサーバ
非サポート
サポート
WebRTC の
ML サンプル
30
サンプルの構成
● シグナリングサーバ
○ SDP/ICE を仲介する REST API サーバ
○ python で起動
● PC クライアントアプリ
○ Web アプリ
○ WebRTC に対応しているブラウザで起動
■ Chrome, FireFox, Opera, Safari, Edge など
■ このリンクから確認できる
● ML クライアントアプリ
○ Unity アプリ
○ WebRTC シーンをビルド
PC (Peer)
Magic Leap1
(Peer)
シグナリングサーバ
環境
● シグナリングサーバ
○ command prompt / terminal など
○ python 3 系
● PC クライアントアプリ
○ WebRTC 対応ブラウザ
● ML クライアントアプリ
○ Unity Engine 2020.2
○ Magic Leap XR Plugin 6.1.0-preview.2
○ Magic Leap Unity SDK Package 0.25.0
○ MLSDK 0.25.0
○ LuminOS 0.98.20
● 全て同じローカルエリアネットワーク内で動作する必要あり
PC (Peer)
Magic Leap1
(Peer)
シグナリングサーバ
同一LAN内
シグナリングサーバ起動
1. terminal または command prompt 起動
2. Assets/MagicLeap/WebRTC/ExampleSetup/Server にて、
$ python server.py を実行。以下のように表示されれば成功
3. サーバをホストしている端末の local IP アドレスを取得
○ terminal なら ifconfig, command prompt なら ipconfig
PC クライアントアプリ起動
1. Assets/MagicLeap/WebRTC/ExampleSetup/Browser/index.html をブラウザで起
動
2. カメラと音声の権限を許可
3. Host の欄にサーバの IP アドレスを入力し、 Connect
4. カメラ映像がストリーミングされる
ML クライアントアプリ起動
1. Assets/MagicLeap/WebRTC/Scenes/WebRTC.unity シーン を build & run
2. ポップアップされる権限確認を全て許可
3. Host の IP アドレスを入力し、接続開始
4. PC クライアントアプリにて映像や音声がストリーミングされる
5. テキストデータの送受信も可能
MLアプリの(忘れがちな)権限設定
WebRTC に必要な権限
● Internet
● LocalAreNetwork
● AudioCaptureMic
● CameraCapture
シーンの操作に必要な権限
● ControllerPose
37
03
MLWebRTC
+ Ayame Labo
Ayame Labo とは?
38
時雨堂さんが公開しているシグナリングサービスです。
利用前に必ず以下のドキュメントを確認しましょう。
Ayame Labo ドキュメント
主に提供されている機能
● シグナリングサーバ
● ブラウザで動作するクライアントアプリ(映像・音声・データの送受信に対応)
シグナリングサーバ Ayame
39
● 基本仕様
○ シグナリング URL: wss://ayame-labo.shiguredo.jp/signaling
○ WebSocket で接続することで、サーバと情報の通信が可能となる
○ Ayame Labo アカウントに紐づくシグナリングキーでの認証が必要
○ 1 対 1 専用で、3 つ以上のクライアント接続は拒否する
● Ayame Labo を使えば、遠距離通信が可能に
○ ML が提供しているサンプルサーバだと無理
● Ayame の詳細仕様はこちらを参照してください
同一LAN
内である
必要なし
Ayame Labo との通信にあたり新規実装した部分
PC (Peer)
Magic Leap1 (Peer)
Ayame Labo (WebSocket)
非サポート
サポート
ここ
利用手順
41
Ayame Labo のサーバとクライアントアプリ起動
42
1. Ayame Labo にログインすれば、自動的にシグナリングサーバが起動
2. サンプルアプリの送受信を選択し、起動
3. 映像コーデックを VP8 に設定(他の設定ではML側でデコード出来ず)
4. 接続ボタンを選択すると、映像と音声がストリーミングされる
ML クライアントアプリの起動
43
1. アプリ側では事前に、シグナリングサーバ URL、ルーム ID とシグナリングキーを
設定する
2. サーバへの接続を開始し、映像と音声のストリーミングを開始
a. この際 MRCamera か通常のカメラかを選べる
3. お互いの映像/音声が表示される
通常カメラ MRCamera
ML側で表示
されている
PCカメラの
映像
44
45
最後に
04
まとめ
46
● ML1 でも WebRTC が使えるようになった!!
○ 映像、音声、データの双方向通信が可能
○ シグナリングサーバとの通信は自分でハンドリングが必要
● MRCamera 映像も送信が可能
○ 装着者以外への状況共有が簡単に(リモートアシストがしやすくなる?)
● 対応しているコーデックなどは今後要調査
○ 知っている方いたら教えてください ...
MRCamera
ブログ
48
Q&A

More Related Content

PPTX
HoloLens2とPCで、WebRTCで映像をやりとり
PDF
Doozy UI 使おうぜ! #unity_lt
PPTX
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
PDF
WebRTC と Native とそれから、それから。
PDF
オンラインゲームの仕組みと工夫
PDF
Unity開発で使える設計の話+Zenjectの紹介
PPTX
大規模ゲーム開発における build 高速化と安定化
PPTX
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例
HoloLens2とPCで、WebRTCで映像をやりとり
Doozy UI 使おうぜ! #unity_lt
リアルタイムサーバー 〜Erlang/OTPで作るPubSubサーバー〜
WebRTC と Native とそれから、それから。
オンラインゲームの仕組みと工夫
Unity開発で使える設計の話+Zenjectの紹介
大規模ゲーム開発における build 高速化と安定化
CEDEC2019 大規模モバイルゲーム運用におけるマスタデータ管理事例

What's hot (20)

PDF
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
PDF
Azure Digital Twins 最新事例紹介 ( IoTビジネス共創ラボ 第16回勉強会 )
PDF
Docker Compose 徹底解説
PDF
【Unity】 Behavior TreeでAIを作る
PDF
コールバックと戦う話
PDF
Immersal を活用した AR クラウドなシステム開発とハンズオン!
PDF
超実践 Cloud Spanner 設計講座
PPTX
OpenVRやOpenXRの基本的なことを調べてみた
PPTX
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
PPTX
UniRxでMV(R)Pパターン をやってみた
PDF
サーバー知識不要!のゲームサーバー "Azure PlayFab" で長期運営タイトルを作ろう
PPTX
KubernetesバックアップツールVeleroとちょっとした苦労話
PDF
中級グラフィックス入門~シャドウマッピング総まとめ~
PDF
究極のゲーム用通信プロトコル “WebRTC”
PPTX
冬のLock free祭り safe
PPTX
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
PPTX
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
PDF
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
PDF
Data platformdesign
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
Azure Digital Twins 最新事例紹介 ( IoTビジネス共創ラボ 第16回勉強会 )
Docker Compose 徹底解説
【Unity】 Behavior TreeでAIを作る
コールバックと戦う話
Immersal を活用した AR クラウドなシステム開発とハンズオン!
超実践 Cloud Spanner 設計講座
OpenVRやOpenXRの基本的なことを調べてみた
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
UniRxでMV(R)Pパターン をやってみた
サーバー知識不要!のゲームサーバー "Azure PlayFab" で長期運営タイトルを作ろう
KubernetesバックアップツールVeleroとちょっとした苦労話
中級グラフィックス入門~シャドウマッピング総まとめ~
究極のゲーム用通信プロトコル “WebRTC”
冬のLock free祭り safe
リアルタイムなゲームの開発でコンテナを使ってみたら簡単便利で激安だったのでオススメしたい
WebRTCを利用した遠隔リアルタイム映像処理フレームワークの実装
UE4ディープラーニングってやつでなんとかして!環境構築編(Python3+TensorFlow)
Data platformdesign
Ad

Similar to Magic Leap で WebRTC 触ってみた (20)

PPTX
8th jan 2013_wotconf
PDF
Firefox OS - Blaze Your Own Path
PDF
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
PPTX
10th jan 2013_miyazaki
PPTX
Chromebook 「だけ」で WebRTCを動かそう
PDF
Kilimanjaro Event
PPTX
SORACOM Technology Camp 2018 | A3. IoT×クラウドデザインパターン
PDF
ビデオ通話・P2Pがコモディティ化する世界 WebRTCによるこれからを探る
PPTX
はじめてのWeb of Things
PDF
MagicOnion入門
PPTX
レポート
PDF
MagicOnion~C#でゲームサーバを開発しよう~
PPTX
Web OSで可能になる世界
PPTX
ふくおかクラウドアライアンス5周年記念セミナー | SORACOMが実現する簡単でセキュアなIoTシステム
PPTX
レポート
PDF
オープンクラウドカンファレンス2017 | クラウドネイティブなIoT通信プラットフォームと その活用事例
PPTX
SORACOM Conference Discovery 2017 | E3. デバイスからのクラウド連携パターン
PDF
HCL Sametime V12 概要
PPTX
技術選択とアーキテクトの役割
PPTX
ブラウザからWeb OSへ〜Web - TV連携事例からその可能性を探る〜
8th jan 2013_wotconf
Firefox OS - Blaze Your Own Path
最新Web 通信系API総まくり!WebRTC, Streams, Push api etc.
10th jan 2013_miyazaki
Chromebook 「だけ」で WebRTCを動かそう
Kilimanjaro Event
SORACOM Technology Camp 2018 | A3. IoT×クラウドデザインパターン
ビデオ通話・P2Pがコモディティ化する世界 WebRTCによるこれからを探る
はじめてのWeb of Things
MagicOnion入門
レポート
MagicOnion~C#でゲームサーバを開発しよう~
Web OSで可能になる世界
ふくおかクラウドアライアンス5周年記念セミナー | SORACOMが実現する簡単でセキュアなIoTシステム
レポート
オープンクラウドカンファレンス2017 | クラウドネイティブなIoT通信プラットフォームと その活用事例
SORACOM Conference Discovery 2017 | E3. デバイスからのクラウド連携パターン
HCL Sametime V12 概要
技術選択とアーキテクトの役割
ブラウザからWeb OSへ〜Web - TV連携事例からその可能性を探る〜
Ad

More from NishoMatsusita (6)

PDF
Immersal で広がる Magic Leap の拡張範囲
PPTX
洋服サイズ計測アプリの開発 ~日常に溶け込むMagicLeapを目指して~
PDF
洋服サイズ計測アプリ開発・展示談とAR x e-Commerceの未来
PPTX
Spatial Computingの未来に思いを馳せて
PDF
AR勉強会第4回part2
PDF
AR勉強会第4回part1
Immersal で広がる Magic Leap の拡張範囲
洋服サイズ計測アプリの開発 ~日常に溶け込むMagicLeapを目指して~
洋服サイズ計測アプリ開発・展示談とAR x e-Commerceの未来
Spatial Computingの未来に思いを馳せて
AR勉強会第4回part2
AR勉強会第4回part1

Magic Leap で WebRTC 触ってみた