狠狠撸

狠狠撸Share a Scribd company logo
MixedReality-WebRTC
PCとHoloLens2で映像の送受信
? Windows Desktop版
MixedReality.WebRTC 1.0.3 M71
? ユニバーサルWindowsプラットフォーム版
MixedReality.WebRTC.UWP 1.0.3 M71
? Node.js 13.11.0
? Visual Studio 2019
? Unity 2018.4.15
利用バージョン
? ローカルWifi環境でテストします
今回の環境
WebRTC Exsampleアプリ
シグナリングサーバー node-dss
WebRTC Exsampleアプリ
Remote Peer Id : PC-20180301A041
シグナリングサーバー: 192.168.11.21:3000
Remote Peer Id : Hololens2
Holelens2Windows10 PC
Wifi Router
ビルド环境の準备
? Visual Studio2019のインストーラーを開き、下記を追加
VS2019のコンポーネント追加
? コマンドプロンプトを開きgitからcloneする
> git clone --recursive
https://github.com/microsoft/MixedReality-WebRTC.git -b
master
※ドライブ直下などで実行。パスは浅いところに作った方が良い
MR-WebRTCの取得
git clone --recursive https://github.com/microsoft/MixedReality-WebRTC.git -b
? クローンしたMixedReality-WebRTCフォルダの
Microsoft.MixedReality.WebRTC.slnを開く
? 再ターゲットを聞かれるので、SDKバージョンを
変更する。
SDKバージョンの変更
? WebRTC.Native.UWP、WebRTC.TestAppUWP、ソリューションの再ター
ゲットを行う。
SDKバージョンの変更
? 該当のSDKをRepairすると良いという情報がある
‘GenXbf.dll’が無いと言わたら???
? Releaseビルドで、ターゲットのプラットフォームを変えながら
ソリューションをビルドする。ARM/x64/x86
? libsMicrosoft.MixedReality.WebRTC.UnityAssetsPluginsフォルダ
を確認し、6つのDllが格納されていることを確認する。無い状
態でUnityで開くとMetaファイル消えちゃいます。
ライブラリのビルド
フォルダ 格納されるライブラリファイル
Assets/Plugins/Win32 /x86 Microsoft.MixedReality.WebRTC.Native.dl
/x86_64 lMicrosoft.MixedReality.WebRTC.dll
Microsoft.MixedReality.WebRTC.Native.dll
Assets/Plugins/WSA /x86 Microsoft.MixedReality.WebRTC.Native.dll
/x86_64 Microsoft.MixedReality.WebRTC.Native.dll
/ARM Microsoft.MixedReality.WebRTC.Native.dll
鲍苍颈迟测プロジェクト(笔颁)
? Unityプロジェクトを作成し、一旦終了させる。
? MixedReality-WebRTClibs
Microsoft.MixedReality.WebRTC.Unity
Assets配下から
?Microsoft.MixedReality.WebRTC.Unity
?Microsoft.MixedReality.WebRTC.Unity.Editor
?Microsoft.MixedReality.WebRTC.Unity.Examples
?Plugins
4つのフォルダを、作成したUnityプロジェクトのAssets配下にコ
ピーし、Unityプロジェクトを開きます。
UnityプロジェクトにWebRTCをコピー
PC用
DLLのimport settingsを変更
(Assets/Plugins/Win32)
/x86
/x86_64
/x86_64
PC用
DLLのimport settingsを変更
(Assets/Plugins/WSA)
/x86 /x86_64 /ARM
PC用
シグナリングサーバー
? Microsoft.MixedReality.WebRTC.Unity.Examplesフォルダの
VideoChatDemoシーンを開きます
? Playしてみます。http://127.0.0.1:3000/: Cannot connect to
destination hostとなりますがとりあえず動くことが確認で
きます
Exsampleを実行
PC用
? 通信相手先の情報を交換するためのシグナリングサーバを
準備します。node-dssを利用します。node.jsを利用するの
で、node.jsをダウンロードします
https://nodejs.org/en/
? ダウンロードしたインストーラーを
起動しnode.jsをインストールします
シグナリングサーバの準備
? コマンドプロンプトを開きgitからcloneする
> git clone https://github.com/bengreenier/node-dss.git
? 動かしてみます。そのままコマンドプロントで以下のコマ
ンドを叩きます。ファイアーウォールの警告が出た場合は
アクセス許可をしてください
> cd node-dss
> set DEBUG=dss*
> npm install
> npm start
シグナリングサーバの準備
? 再度、UnityのExsampleシーンをPlayします
? node-dssのログが表示されます、 相手を識別するための
Remote Peer Idが表示されます
? PC版の実行環境はこれでOKです
Exsampleの実行
PC用
鲍苍颈迟测プロジェクト(贬辞濒辞尝别苍蝉2)
? MRTK2.3のプロジェクトをベースに作成していきます。
Hololens2向けのMRTK2.3の環境構築は別スライドです。
/SatosiOkubo/hololens2-mrtk23-
229854595
をご覧ください
? 「UnityプロジェクトにWebRTCをコピー」と「 DLLの
import settingsを変更」の手順を同様に行います
Hololens2のUnityプロジェクト作成
Hololens2用
? Microsoft.MixedReality.WebRTC.Unity.Examplesフォルダの
VideoChatDemoシーンを開きます
? メニューより、Add to Scene and Configure…を選択
MRTKを組み込みます
Hololens2用
? メニューより、Configure Unity Projectを選択、適用されて
いないものがないかチェック
MRTK推奨設定の反映
Hololens2用
Stereo Rendering Mode変更
? XR Settingsで、Single Passに変更する
Hololens2用
CanvasをMRTK Canvasに変更
? Convert to MRRK Canvasを押す
? Add NearInteractionTouchableUnityUIを押す
Hololens2用
LocalVideoSourceの設定
? Video CodecをH.264
? Format Modeを”Manual”にして、Profile kindを”videoconferencing”、WidthとHeight
を”1280×720”に変更します
Hololens2用
NodeDssSignaler.cs
/// <summary>
/// Internal helper for sending HTTP data to the node-dss server using POST
/// </summary>
/// <param name="msg">the message to send</param>
private IEnumerator PostToServer(Message msg)
{
yield return new WaitUntil(() => RemotePeerId.Length > 0);
if (RemotePeerId.Length == 0)
{
throw new InvalidOperationException("Cannot send SDP message to remote peer; invalid empty remote peer ID.");
}
Hololens2用
? MRTKで使う際に不要になるのでEvent Systemコンポーネ
ントを削除
EventSystemを削除
Hololens2用
? Player Settingsを開き、Capabilitiesにに下
記のネットワーク関連とWebCamに
チェックをいれます
Capabilitiesの設定
internetClient インターネットや、公共の場所のネットワーク への出
力方向のアクセスを提供します。 インターネットにア
クセスする必要があるほとんどのアプリは、この機能
を使います。
internetClientServer インターネットや、公共の場所のネットワーク からの
入力方向と出力方向のネットワーク アクセスをアプリ
に提供します。
privateNetworkClientServer ユーザーの信頼する場所 において、入力方向と出力方
向のネットワーク アクセスをアプリに提供します。
WebCam カメラの使用
Hololens2用
AppxManifest.xml(参考)
<Capabilities>
<Capability Name="internetClient" />
<Capability Name="internetClientServer" />
<Capability Name="privateNetworkClientServer" />
<uap:Capability Name="videosLibrary" />
<uap2:Capability Name="spatialPerception" />
<DeviceCapability Name="webcam" />
<DeviceCapability Name="microphone" />
</Capabilities>
<Extensions>
<Extension Category="windows.activatableClass.inProcessServer">
<InProcessServer>
<Path>UnityPlayer.dll</Path>
<ActivatableClass ActivatableClassId="UnityPlayer.XamlViewManager" ThreadingModel="both" />
<ActivatableClass ActivatableClassId="UnityPlayer.AppCallbacks" ThreadingModel="both" />
</InProcessServer>
</Extension>
</Extensions>
<build:Metadata>
<build:Item Name="cl.exe" Version="19.25.28610.4 built by: vcwrkspc" />
<build:Item Name="CodeSharingProject" Value="6A2255BE-B368-4127-9782-BD762DEA33C5" />
<build:Item Name="VisualStudio" Version="16.0" />
<build:Item Name="OperatingSystem" Version="10.0.18362.1 (WinBuild.160101.0800)" />
<build:Item Name="Microsoft.Build.AppxPackage.dll" Version="16.0.29903.111" />
<build:Item Name="ProjectGUID" Value="{2fabdf39-a3a3-4497-95ba-5aee089ebf0f}" />
<build:Item Name="OptimizingToolset" Value="None" />
<build:Item Name="TargetRuntime" Value="Native" />
<build:Item Name="Microsoft.Windows.UI.Xaml.Build.Tasks.dll" Version="16.0.29903.111" />
<build:Item Name="WindowsMobile" Version="10.0.18362.0" />
<build:Item Name="MakePri.exe" Version="10.0.18362.1 (WinBuild.160101.0800)" />
</build:Metadata>
</Package>" />
</Capabilities>
Hololens2用
动作确认
? PC用、Hololens2用のおのおののUnityプロジェクトで下記
の設定をおこないます
起動シーンの設定
両方
? HierarchyのPeerConnectionを選択し、InspectorでNode Dss
Signalerコンポーネントに接続先を設定します
Web-RTC接続先設定
Holelens2用プロジェクトPC用プロジェクト
両方
? シグナリングサーバを起動した状態で、HoloLens2側のア
プリとPC側のアプリを起動。
ビルドして起動
HoloLens2側
PC側
両方
困ったな???
? Unityプロジェクトのパスを浅くする
? Unityプロジェクトに日本語パスを使わない
ビルド周りでエラーになる
自分でライブラリをコンパイルせず
バイナリを使う場合の手順
? コマンドプロンプトを開きgitからcloneする
> git clone --recursive
https://github.com/microsoft/MixedReality-WebRTC.git -b
master
MR-WebRTCのインストール
git clone --recursive https://github.com/microsoft/MixedReality-WebRTC.git -b
? 下記URLからNugetのパッケージをダウンロードします。
(パッケージのダウンロードリンクをクリック)
? https://www.nuget.org/packages/Microsoft.MixedReality.
WebRTC
? https://www.nuget.org/packages/Microsoft.MixedReality.
WebRTC.UWP
ネイティブライブラリのダウンロード
? ダウンロードしたNugetパッケージの拡張子をzipに変更し、
解凍する。
? Nugetパッケージからgitからcloneしたフォルダにdllをコ
ピー
ネイティブDLLのコピー
解凍したNugetパッケージ MixedReality-WebRTC
Microsoft.MixedReality.WebRTC
- lib/netstandard2.0/Microsoft.MixedReality.WebRTC.dll Assets/Plugins/Win32/x86_64
- runtimes/win10-x86/native/Microsoft.MixedReality.WebRTC.Native.dll Assets/Plugins/Win32/x86
- runtimes/win10-x64/native/Microsoft.MixedReality.WebRTC.Native.dll Assets/Plugins/Win32/x86_64
Microsoft.MixedReality.WebRTC.UWP
- runtimes/win10-x86/native/Microsoft.MixedReality.WebRTC.Native.dll Assets/Plugins/WSA/x86
- runtimes/win10-x64/native/Microsoft.MixedReality.WebRTC.Native.dll Assets/Plugins/WSA/x86_64
- runtimes/win10-arm/native/Microsoft.MixedReality.WebRTC.Native.dll Assets/Plugins/WSA/ARM
DLLのコピーフォルダ対応
Microsoft.MixedReality.WebRTC.dll
Microsoft.MixedReality.WebRTC.Native.dll
Microsoft.MixedReality.WebRTC.Native.dll
Microsoft.MixedReality.WebRTC.Native.dll
Microsoft.MixedReality.WebRTC.Native.dll
Microsoft.MixedReality.WebRTC.Native.dll

More Related Content

贬辞濒辞尝别苍蝉2と笔颁で、奥别产搁罢颁で映像をやりとり