みなさん、こんにちは。サイオステクノロジー武井です。今回は、Azure上に高速・堅牢なライブ配信環境を構築するお話をします。
OBSとは?
昨今、テレワークの隆盛により、勉強会などのライブ配信に対する需要は高まるばかりです。オープンソースなライブ配信ソフトウェア「Open Broadcaster Software(OBS)」を使うことで、高度な配信を実現することが可能であり、現在圧倒的なシェアを締めております。
OBSの実行環境は結構ハードル高い
OBSの実行環境はなかなかハードルが高いのが現状です。
潤沢なリソース
OBSを動作させる際には潤沢なリソースを持つPCや高速な回線が必要となります。場合によっては専用のグラフィックカードを用いたハードウェアエンコーディングが必要な場合があります。
高速な回線
OBSは、OBSで生成した動画をYouTubeなどの動画配信サービスにストリーミングで配信するため、高速で安定した回線が必要になります。出来れば無線LANではなく有線が望ましいのですが、住宅事情も鑑みますと、なかなか難しい場合もあるかもしれません。
堅牢な電源
電源トラブルによる配信中断も心配です。夏に自宅から配信するときにエアコンと電子レンジを両方動かしてブレーカーが落ちてしまい、OBSの電源も喪失し配信中止なんていう事故になってしまいます。
UPSで電源を冗長化し、さらには回線も複数プロバイダを契約、さらにネットワーク機器も冗長化すればバッチリですが、お金がいくらあっても足りません(´・ω・`)
そんなときのOBS on Azure
そんな課題を解決してくれるのが、Azure上でOBSを動かす、名付けて「OBS on Azure」です。
Azureは設定ポチポチで、潤沢なリソースや高速な回線を持つ仮想マシンが簡単に作成できます。その仮想マシンの上でOBSを動かしちゃおうという作戦です。
Azure上の仮想マシンであれば、CPUのコア数の多いものやメモリサイズの大きなものを簡単に指定できます。もちろん、そのようなスペックの高いマシンは高額になりますが、ライブ配信をしている間だけの短時間の利用であれば、それほど大きい金額はかかりません。Dシリーズで16コアのものでも、1時間120円程度かと思います。そんなAzure上の仮想マシンにOBSを構築すれば、CPUやメモリ不足にもう悩むことはありません。
Azure上の仮想マシンは、電源の問題からも解放されます。Azureのリソースが稼働しているデータセンターは、電源の冗長化その他もろもろの対策が取られており、その堅牢性が担保されています。Azureももちろん絶対安全とは言い切れないとは思いますが、クーラーと電子レンジのコンボで供給が喪失するような自宅の電源よりは遥かによいでしょう。
また、Azureのネットワークは高速なバックボーンに支えられています。OBSからYouTubeなどの動画サービスにストリーミング配信するときも、Azure上の仮想マシンで構築したOBSであれば、その恩恵に預かることができます。もう、自宅に契約したインターネットプロバイダの回線が遅くて、ストリーミングができないなんてことはありません。
ちなみに、配信者のPCからAzure上のOBS稼働PCの操作はリモートデスクトップで行います。リモートデスクトップは動画のストリーミング配信に比べれば軽量なプロトコルですので、回線の速度はそれほど高速でなくても問題はありません。仮に通信が不通になったとしても、OBS稼働PCからYouTubeなどの動画サービスへの通信が生きていれば、配信自体は継続されます。極端なこと言ってしまえば、カフェとか電車とか不安定な回線からでも配信は行えます。
システム構成
システム構成は以下のような感じです。
Azure上の仮想マシンにOBSとTeamsをインストールします。
登壇者は、Teamsの会議を作成して、その会議に登壇者に参加してもらいます。
TeamsとOBSの間はNDI(ネットワークデバイスインターフェース)でやり取りを行います。NDIはIPで映像を伝送する規格で、TeamsはNDIに対応しており、OBS側でもプラグインを利用すればTeamsからNDIで伝送された映像を受け取ることができます。
TeamsのNDIは、Teams参加者のカメラ映像や画面共有ごとにOBSに伝送することができます。なので今までTeamsの画面から登壇者や共有画面をクロップしていましたが、そんな手間から解放されます。
そしてOBSで生成した映像は、YouTubeなどの動画サービスに配信します。
構築してみよう
では、構築してみましょう!!
仮想マシンの構築
なにはともあれ仮想マシンがないと始まりません。Windows 10のイメージで仮想マシンを作成します。GPU最適化済みインスタンスがオススメです。後はDシリーズで16コアくらいで、ソフトウェアエンコード(h.264)でも、私の環境では問題なく配信できました。
OBSのインストール
構築した仮想マシン上に、OBSをインストールします。以下のURLからダウンロードできます。詳細な手順は割愛します。
obs-ndiプラグインのインストール
構築した仮想マシン上に、obs-ndiプラグインをダウンロードします。以下のURLよりにアクセスします。
https://github.com/Palakis/obs-ndi/releases
以下の画面から、obs-ndi-X.X.X-Windows-Installer.exe(X.X.Xはバージョン番号)をダウンロードして実行します。ウィザードに従えばインストールは簡単にできます。
VB-CABLE Virtual Audio Deviceのインストール
仮想オーディオデバイスであるVB-CABLE Virtual Audio Deviceをインストールします。以下のURLにアクセスします。
WindowsのアイコンをクリックしてZIPファイルをダウンロードします。
先程ダウンロードしたZIPを解凍して、VBCABLE_Setup-x64.exeをクリックして、ウィザードに従ってインストールします。
会議ポリシーの変更
NDIを使うためには、Teamsの会議ポリシーを変更する必要があります。Teamsの管理センターにアクセスして、左部メニューから「会議ポリシー」をクリックします。ポリシーの一覧が表示されますので、適切なポリシーを選択します。通常は「グローバル」でよいはずです。
「ローカルブロードキャスト」をオンにします。
TeamsクライアントのNDI有効化
Azure上の仮想マシンにインストールしたTeamsの設定にて、NDIを有効化します。Teamsクライアント右上の、点が横に3つ並んでいるアイコンをクリックして、「設定」をクリックします。
「アプリのアクセス許可」をクリックします。「ネットワークデバイスインターフェース」をオンにします。
NDIで配信
仮想マシン上にインストールしたTeamsクライアントで会議を作成したら、「その他」をクリックします。すると、下の方に「NDIで配信」というメニューがあるので、これをクリックします。これをやらないと、OBSからNDIのデバイスが見えてきません。
OBSへの取り込み
ソースの追加で「NDI Source」を選択します。
「Source name」にNDIのソースの一覧が表示されます。ここには会議に参加しているユーザーの映像のソースや、会議にて画面共有したもののソースが表示されます。適切なものを選択します。
以下の画面は、Teamsにて画面共有されたNDIソースと、Teamsの会議に参加しているユーザーのカメラ映像のNDIソースを追加したものになります。
まとめ
Azure上でOBSを動かせば、リッチな配信を簡単にできますね。スゴイぞ、OBS on Azure!!ぜひトライしてみて、みなさんもどんどんライブ配信していきましょうヮ(゚д゚)ォ!