WVD Spring 2020 #25 Teams 会議をざっくりテストする

この記事のWVDは”Windows Virtual Desktop Spring 2020 Release”が対象です。

今回は Windows Virtual Desktop Spring 2020 でTeams 会議を試していきます。以下の流れでテストしていきます。 今回の記事は”① Teams 会議が使えるかざっくりテスト”です。 先に結論を言うと、WVD の仮想のWindows 10でTeams 会議は問題なく使えました。 マイクもカメラも動作確認出来ました。 マイク入力とカメラは既定で無効になっているのでそこを有効にすることがポイントだったりします。

  1. Teams 会議が使えるかざっくりテスト
  2. 5/29 にPreview 提供された Media optimization for Microsoft Teams
  3. Windows 10 Multi-session でのTeams
  4. PoC に役立つTeams パフォーマンス測定 & チューニング

まずは Teams 会議が使えるかざっくりと確認します。 ”ざっくり”の意味は以下の観点でテストをPass する、質は問わずに使えたかどうか、ということです。

  • Teams 会議に参加できる
  • カメラ画像を2者間で共有できる (画質はとわない)
  • 音声を2者間で共有できる (音質はとわない)
  • 画面を2者間で共有できる (画質は問わない)

テストする環境は以下の感じです。Microsoft の言葉を借りると”最適化されていない Microsoft Teams“でのテストとなります。 Teams 会議の音声やカメラ、デスクトップ共有はすべて画面転送プロトコルの中を通ります。 音声やビデオのエンコード・デコードやレンダリングはすべて仮想のWindows 10 で行います。

まずは WVD の仮想のWindows 10 にサインインし、Teams クライアントをインストールします。

Teams のホームページにアクセスし、デスクトップ版をダウンロードし、起動します。

起動しました。

Teams にサインインします。 

まずは カメラやマイクが利用出来るかどうか確認するために一人で会議を開催します。どこからでもよいですが、予定表から”今すぐ会議”を実行します。

”今すぐ参加”から会議に参加します。

会議に参加出来ました。 

カメラを有効にするために、カメラアイコンにカーソルをもっていきます。しかし”利用可能なカメラが見つかりません” とのこと。 ローカルデバイスにあるカメラがWVD の仮想のWindows 10にリダイレクト出来ていないようです。

念のためローカルデバイスでTeams を起動し同様に会議に参加します。 問題ありません。 お面みたいなものは Snap Camera というアプリで加工 しているだけです。 デバイスの設定ではスピーカとマイクはOnboard のRealtek(R) のものが、カメラは Snap Camera が認識されています。 このSnap Camera 、オンライン飲み会にとても有効です。

ローカルデバイス上のTeams

再度WVD の仮想のWindows 10 の状況を確認します。 カメラが”なし”になっています。 ローカルデバイスのカメラを仮想のWindows 10 に渡せていません。

順番に問題を切り分けていきます。 まずはローカルデバイス側でSnap Camera を止めてどうなるか。 はっきりさせるために一度 Snap Camera をアンインストールします。

カメラは”FJ Camera”に変わりました。 ローカルデバイスに富士通のLIFEBOOK を利用しており、カメラも内蔵しています。そのカメラが “FJ Camera”です。 Snap Camera のエフェクトが使えなくなったので顔は手動でペイントを使ってマスクします。

ローカルデバイス上のTeams

WVD の仮想Windows 10 からサインアウトし、再度サインインします。カメラは”なし”です。

デバイスマネージャでカメラデバイスを確認します。 以下はWVDの仮想のWindows 10 です。 カメラはありません。

画像に alt 属性が指定されていません。ファイル名: image-785.png

以下はローカルデバイスです。カメラデバイスがあります。

ローカルデバイス上のデバイスマネージャ

ローカルデバイスのカメラを仮想のWindows 10 にリダイレクション出来ない理由はいくつか考えられます。 カメラがリダイレクション対象のではないこと。これはもうちょっと言うとローカルデバイス側でカメラをどう扱っているかも関係しそうです。USB経由なのかそれ以外なのか。  あとは WVD としてカメラのリダイレクションは既定で無効となり有効にするには設定が必要なのか。 

現在のHost pool のRDP Settings は以下の通りです。 COM ports 以外はすべてレダイレクトしています。 Camera という項目は無いので有効なのか無効なのかはこの画面ではわかりません。

まず関係ないとは思いますが、COM port もリダイレクションを有効化して再度確かめてみます。

駄目でした。

デバイスとして見えてきていないのでTeams に問題があるわけではなく、デバイスのリダイレクションの問題、つまり WVD 側で何とかできるかどうか。

公式ドキュメントを再度確認します。 海外のForum なども見てみます。 Camera についてははうまくいかない人もうまいいっている人もいるようです。

以下のYoutube動画の 開始直後にTeams でCamera のリダイレクションに成功しています。2019年9月30日の動画です。

ローカルデバイスのカメラを変えてテストすることも考えます。 Web カメラを買いに行くか迷いつつCamera のリダイレクションに関する情報を公式サイトのWVD のマニュアルから見つけました。

“camerastoredirect:s:value” というパラメータです。 value に”*” を指定すればすべてのCamera をリダイレクトできるとのこと。 このパラメータは Azure Portal のHost Pool のRDP settings にはありませんのでPowerShell からの設定になりそうです。

まずはマニュアルを確認します。 Fall 2019 とSpring 2020 でやり方は違うようでマニュアルもそれぞれ用意されています。 今回はWVD Spring 2020 の環境で設定します。

まずはWVD のためのPowerShell 実行環境の準備です。管理者として Windows PowerShell を起動します。”Install-Module -Name Az.DesktopVirtualization” で必要なモジュールをインストールします。そのあとに”Connect-AzAccount” でAzure にサインインします。 コマンドの実行に失敗する場合は “Set-ExecutionPolicy RemoteSigned”を。  この辺の詳細は公式マニュアルを。

次はRDP settings のproperty を変更します。 公式マニュアルを参考に進めます。 まずは変更の前に今の設定値を確認してみます。

host pool の情報。

CustomRdpProperty の情報。”camerastoredirect” は見当たりません。

Name : bigriver
CustomRdpProperty : audiocapturemode:i:1;audiomode:i:0;drivestoredirect:s:*;redirectclipboard:i:1;redirectcomports:i:1;
redirectprinters:i:1;redirectsmartcards:i:1;screen mode id:i:2;

それでは”camerastoredirect”を追加してみます。 公式マニュアルを参考にします。 Update します。 

PS F:\BIGRIVER> Update-AzWvdHostPool -ResourceGroupName rg-bigriver.jp -Name bigriver -CustomRdpProperty camerastoredirect:s:*
Location Name Type
——– —- —-
eastus bigriver Microsoft.DesktopVirtualization/hostpools

ちょっと失敗。 元々あったCustomPropertyが今回追加しようとしたcamerastoredirectで置き換えられてしまいました。 元々あったプロパティはすべてなくなってしまいました。

PS F:\BIGRIVER> Get-AzWvdHostPool -ResourceGroupName rg-bigriver.jp -Name bigriver | format-list Name, CustomRdpProperty
Name : bigriver
CustomRdpProperty : camerastoredirect:s:*;

Azure Portal から Host pool のRDP Settings を確認すると、有効にしていたDisk / COM / Audio input がすべて初期値の無効になっています。

物は試しにこの状態でWVD の仮想のWindows 10 にサインインしてみます。 Audio in のリダイレクションは無効ですがカメラはリダイレクションしてくれるかもしれません。 

結論、カメラは有効に機能しました。(スクリーンショットは取り忘れ) Audio in は無効なのでマイクは使えませんでした。

Audio input を有効にして再接続します。 WVD の仮想のWindows 10 のTeams にローカルデバイスのカメラがリダイレクションし表示されています。

Audio input の設定の仕方ですが、PowerShell でマニュアルを参考にして複数のCustomPropertiesを設定してもよいでしょうし、Azure Portal から再設定でも問題ありません。 Azure Portal から変更時、追加した”camerastoredirect:s:*”はそのままにしてくれるためです。

変更後、WVD の仮想のWindows 10 をサインアウトし、フィードを更新し、再度サインインします。 カメラもオーディオ(IN / OUT)ともにすべて認識しました。

デバイスマネージャでは”リモートデスクトップ カメラ デバイス”の中に”LIFEBOOK – FJ Camera”としてリダイレクションされました。

やっと準備がととのいました。 Teams 会議に外部ユーザ(中身は私ですが)を招待し、外部ユーザ含めて2アカウントでTeams 会議に参加します。

参加は問題なく行えました。 また、双方のカメラ画像も問題なく表示されています。 そして、WVD の仮想のWindows 10 へのAudio input のリダイレクションも行えています。 結果、マイク入力を相手のデバイス側でサウンド出力されることも確認できました。 スクリーンショットでの紹介はありませんがデスクトップを共有しWebブラウザやアプリケーションの画面共有も問題なく実行できました。

まとめです。 画質やネットワーク帯域は考慮しない前提ですが、WVD の仮想のWindows 10 でTeams 会議で通話し、カメラでお互いの顔を写し合い、画面共有による資料共有も行えることを確認出来ました。

Teams 会議に参加できるOK
OKカメラ画像を2者間で共有できるOK
音声を2者間で共有できるOK
画面を2者間で共有できるOK

また、共有できるノウハウとして、Camera のリダイレクションは既定では無効であること、設定はAzure Portal からは行えないこと(画面に項目が無い)、設定はPowerShell から実施できること、です。  後から分かったのですがこの話もズバリ公式サイトのマニュアルに書いてありました。

今回すごい遠回りしてやっと動作確認とれたのですが、最初からマニュアル見ておけばよかったとちょっと後悔、、、もしていなかったり。 ブログだとあえて問題おこしてその時のエラーコードや試行錯誤を公開する方が有意義かなと。 うまくいった手順だけをキレイに残していってもそれは突き詰めると公式マニュアル見れば済む話です。 あと WVD Spring 2020 はPreview なので今頑張ってきれいに作ってもあとで色々変わっていくので手間かけても仕方がないなとも思っていたりします。 ということでWVD Spring 2020 のやってみた系の記事はあまりマニュアルを読まずに適当に進めるスタイルを当面続ける予定です。

次の検証はWindows Virtual Desktop Media optimization for Microsoft Teams です。 Optimization は数日前に公開されたリモートデスクトップクライアントのバージョン 1.2.1026.0 から利用できる模様。  公式ドキュメントはこちら。導入手順を見る限りレジストリ変更やパッケージのインストールが必要です(既定のままでは動作しないということ)。 ちなみに日本語サイトのマニュアルはこの新しい機能には触れていませんのでご注意を。 他にも結構たくさんそういうことがありますので基本はen-us でDocs を見ておいた方がよいです。