541 Views
May 15, 24
スライド概要
XRミーティング 2024/05/15【AR/CR/MR/SR/VR】(https://osaka-driven-dev.connpass.com/event/317795/)登壇資料。
Azure Communication Services の音声とビデオ会議の際に利用できるData Channel APIについての紹介。
先月紹介したHoloLens 2用のサンプルアプリを改造し、MRで空間にオブジェクトを表示&参加者同士でオブジェクトの操作を可能にする機能をData Channel APIで実現した話。
HoloLens 2同士でACRを使った会議を行う際に空間に表示されたオブジェクトのtransformを同期化してインタラクティブな会議を実施できるか検証しました。
実際の動画は以下のxで投稿。
https://x.com/takabrz1/status/1790754122767224873
ICT業界でソフトウェアエンジニア/アプリケーションアーキテクトを担当。 社内ではXR関連技術に関する啓もう活動や技術支援に従事。 業務の傍ら、XR(特にMixed Reality領域)についての開発技術の調査、開発などを行っています。 また、「大阪駆動開発」コミュニティ所属しており、日々の調査で得た知見はコミュニティを通して情報発信を行っています。
Azure Communication Services(再) Data Channel API使うと色々できそうです。 2024/05 XRミーティング @takabrz1 Takahiro Miyaura
Microsoft MVP for Mixed Reality 2018-2024 XRは趣味です 宮浦 恭弘 (Miyaura Takahiro) ◼ 大阪駆動開発(とHolomagicians)コミュニティに生息 ◼ HoloLens日本販売してからxR系技術に取組む ◼最近は ✓ ✓ Mixed Reality Toolkit v3.0.0(GAされた!) Snapdragon Spacesとか戯れている。 ◼ 新しい技術や、MRに使えそうな技術を調べる 技術Tips : https://qiita.com/miyaura https://zenn.dev/miyaura @takabrz1 ※よかったらこれを機にお知り合いになってください
今日は先月に引続き Azure Communication Serviceについて @takabrz1 Takahiro Miyaura
先月はこんな話をしました。 独自のカスタムアプリに容易に導入できる ○コミュニケーション手段に関する機能 ✓音声及びビデオによる通話 ✓リッチテキストチャット ✓SMS ✓電子メール ○TeamsやMicrosoft 365との連携 ✓Teamsとの相互運用 ✓ Teams会議にカスタムアプリからミーティング ✓Microsoft Graph APIにより組織やoutlook予定表等を活用できる 2024/4/17 Copyright © 2024 Takahiro Miyaura 4
今日の目次 Azure Communication Servicesについて あれが作られそうです! 1. Azure Communication Servicesの概要 2. Data Channel APIの話 3. Demo(収録済) 4. まとめ 2024/4/17 Copyright © 2024 Takahiro Miyaura 5
Azure Communication Services概要 @takabrz1 Takahiro Miyaura
Azure Communication Services 概要 マルチチャネルコミュニケーション実現のためのサービス ○ 音声、ビデオ、チャット、テキスト メッセージ/SMS、 メールなどのコミュニケーション手段を利用可能 ○ ライブラリが提供されており、双方向通信など専門家でな くてもアプリに機能を実装可能 ○ 他のサービスとの連携(M365, Teams等)のサポート Web-RTCといったローレベルでのアプリ開発は不要で 様々なコミュニケーション手段を実現することが可能 2024/4/17 Copyright © 2024 Takahiro Miyaura 7
Azure Communication Services サービスの構成 Rest APIとSDKで利用する仕組み ○ Calling SDK(※今回利用) ○ Call Automation SDK ○ Chat SDK ○ SMS SDK ○ e-Mail SDK ○ UI Library Node.jsで作られたUIライブラリ Web-RTCといったローレベルでのアプリ開発は不要で 様々なコミュニケーション手段を実現することが可能 2024/4/17 Copyright © 2024 Takahiro Miyaura 8
Azure Communication Services Azure Communication Services Calling Unity SDK Unity向けのSDKがありHoloLens 2等で利用できる 【公式クイックスタートあり】 クイック スタート:音声通話をアプリに追加する https://learn.microsoft.com/ja-jp/azure/communication-services/quickstarts/voice-video-calling/getting-started-with-calling?wt.mc_id=WDIT-MVP-5003104&tabs=uwp&pivots=platform-unity クイックスタート: アプリに 1 対 1 のビデオ通話を追加する https://learn.microsoft.com/ja-jp/azure/communication-services/quickstarts/voice-video-calling/get-started-with-video-calling? wt.mc_id=WDIT-MVP-5003104& pivots=platform-unity 2024/4/17 Copyright © 2024 Takahiro Miyaura 9
今日は音声とビデオ会議(Calling SDK) で使えるとても便利なAPIを紹介 これ使うと。。。 @takabrz1 Takahiro Miyaura
Azure Communication Services Calling SDKによる会議実施時 音声やビデオ会議に関する機能を提供するライブラリ User A ユーザアクセストークン の生成要求 ユーザアクセストークン の生成要求 アクセストークン アクセストークン ミーティングに参加 ミーティングに参加 アクセストークン ユーザ情報 ビデオ、画面、音声データ アクセストークン ユーザ情報 Azure Communication Services ビデオ、画面、音声データ 他参加者のデータ ストリーミング配信 他参加者のデータ ストリーミング配信 2024/4/17 User B Copyright © 2024 Takahiro Miyaura 11
Azure Communication Services Data Channel API 会議中の音声、ビデオ以外のリアルタイムデータ通信用API 任意のデータ User A 2024/4/17 他参加者のデータ ストリーミング配信 任意のデータ Azure Communica tion Services Copyright © 2024 Takahiro Miyaura 他参加者のデータ ストリーミング配信 User A 12
Azure Communication Services Data Channel API仕様 ○ 送信は自分以外を対象 ○ 送信相手を指定可能(Max:64名) ✓ (指定なしで本人以外全員) ○ チャネルIDによりデータの用途を分類可能 ○ 1通信あたり 32Kbまで(それ以上は分割送信) ○ 通信品質の設定が可能 ✓ 極力意向に沿えるよう頑張る方式 ✓ 設定項目:帯域、優先度、信頼度(送信順保証/未保証) ✓ 帯域制限(現在) 信頼度の高いチャンネル (Durable): 64 kbps 信頼度の低いチャンネル (Lossy): 512 kbps 高優先度で信頼性の低いチャネル: 200 kbps 2024/4/17 Copyright © 2024 Takahiro Miyaura 13
Azure Communication Services Data Channel API 会議中の音声、ビデオ以外のリアルタイムデータ通信用API Data Channelの有効化 Data Channelの有効化 DataChannelReceiverの提供 送信用チャネルを開く データ受信通知 (DataChannelReceiver経由) User A 送信側 データ送信 Azure Communication Services データ取得(Pop) User B 受信側 データ取得 任意のチャネル番号を指定しバイナリデータを送受信 2024/4/17 Copyright © 2024 Takahiro Miyaura 14
Azure Communication Services
Data Channel API – 送信側の実装
会議中の音声、ビデオ以外のリアルタイムデータ通信用API
DataChannelCallFeature dataChannelCallFeature
= call.Features.DataChannel; //callはCallClient
Data Channelの有効化
送信用チャネルを開く
User A
送信側
データ送信
DataChannelSenderOptions options
= new DataChannelSenderOptions();
options.ChannelId = 1000; //チャネル番号
options.BitrateInKbps = 32; //利用帯域
options.Priority = DataChannelPriority.Normal; //優先度
options.Reliability = DataChannelReliability.Lossy; //信頼性
var participants
= new List<CallIdentifier> { /* identifier1, identifier2, ... */ };
options.Participants = participants.AsReadOnly();
DataChannelSender sender
= dataChannelCallFeature.GetDataChannelSender(options);
sender.SendMessage(msgData); //msgDataはbyte[]
2024/4/17
Copyright © 2024 Takahiro Miyaura
15
Azure Communication Services Data Channel API 会議中の音声、ビデオ以外のリアルタイムデータ通信用API DataChannelCallFeature dataChannelCallFeature = call.Features.DataChannel; //callはCallClient Data Channelの有効化 dataChannelCallFeature.ReceiverCreated += (sender, args) => { DataChannelReceiver receiver = args.Receiver; DataChannelReceiverの提供 //データ受信時に処理するイベントを登録 receiver.MessageReceived += MessageReceivedHandler; } データ取得(Pop) void MessageReceivedHandler(object sender, PropertyChangedEventArgs args) { if (sender is DataChannelReceiver receiver) { if (receiver.ChannelId == 1000 ) { DataChannelMessage message = receiver.ReceiveMessage(); byte[] data = message.Data; }}} 2024/4/17 データ受信通知 (DataChannelReceiver経由) Copyright © 2024 Takahiro Miyaura User B 受信側 データ取得 16
これ(Data Channel API)が先月紹介した Unity用のCalling SDKでも使えるんですよ Demo 2024/4/17 Copyright © 2024 Takahiro Miyaura 17
なのでこんなことができるようになります 懐かしくないですか? そう、なんか以前のHololens用Meshアプリっぽい 2024/4/17 Copyright © 2024 Takahiro Miyaura 18
まとめ 2024/4/17 Copyright © 2024 Takahiro Miyaura 19
今日のまとめ 引続きAzure Communication Servicesの調査をしました。 Data Channel API使いこなすと面白そうです。 1. Azure Communication Servicesの概要 ✓ マルチチャネルコミュニケーション実現のためのサービス 2. Data Channel APIの話 ✓ 音声とビデオ通話(会議)でバイナリデータのリアルタイム通信用API 3. Demo ✓ HoloLens用ACSアプリで空間内のオブジェクト操作を同期してみた 参加者の位置情報、空間アンカー等を仕込めば 遠隔地でデジタル情報の同期、RGBカメラ共有等を駆使した会議ができるかも 2024/4/17 Copyright © 2024 Takahiro Miyaura 20
大阪駆動開発 関西を中心に、IT系のおもしろそうなことを 楽しんでやるコミュニティ