Azure Media Servicesのライブ機能では、RTMPエンコーダーからの配信ができます。
ここでは、Cerevoさんから出ているコンパクトかつパワフルなハードウェアエンコーダーである「LiveShell.Pro」からAzure Media Servicesへのライブ配信の手順をまとめてみます。
Cerevoさん: LiveShell.Pro 製品サイト
http://static-shell.cerevo.com/pro/ja/product.html
LiveShell.Proの興味深い機能は以下です。
-
持ち運びが容易な720pでの長時間の安定配信
- 720pのNote PCでの安定稼働には、それなりのスペックが必要
-
HDMI入力
- 絵と音がずれることが激減!
-
Ethernet / Wireless ネットワークへの直接接続
- これによって、Azureへ直接接続
-
設定用のWeb管理画面
- 長い文字入力の手間が減る
ご注意点
- このドキュメントの構成は、配線も1つですし、今回はWifiルーターで接続をしていますので、大事なライブ配信で使うには力不足です。
ですが、拡充していけば、大型イベントなどでもご利用いただけると思います。LiveShell.ProもAzureも冗長化するのに、それほど大きな投資にはならないと思いますので。 - Cerevoさんから「これで動きます!サポートもします!」とお言葉を頂いたわけではないので、「非公式」と冠をつけております。
システム構成
全体構成は以下となります。
Azure Media Servicesの用語 (上記の図)
-
チャネル
- Azure側での、エンコーダーからのストリーミングデータの受け取りを行う
- 映像のプレビュー機能
- “実行”状態時のみ、課金される
- オンプレミスのエンコーダーから設定を変更した場合は「リセット」を推奨。
リセットを行うと、プログラムも再作成が必要
-
プログラム
- Azure側で、ストリーミングの外部への公開と、Azure内でのBlobストレージへの保存を行う
- プログラムの開始/終了で、ライブ配信の開始/終了のタイミングを制御
この図では、CDNが入っていませんが、Azure CDNも近いうちに連携して使えるようになります。
この構成では、セミナーでのPCスクリーンアウトをキャプチャすることを想定して、PCの出力を、LiveShell.Proの出力に直接つないでいます。
セミナーでの配信の場合は、PCの「画面の絵」と「音声」を以下の2つには出力したいと思います。
- プロジェクター: こちらがメインですね。
- ライブ配信先: こちらは補助的です。
その場合は、「分配器」をPCとLiveShell.Proの間に入れることで、実現ができると思います (まだ試していませんが…)。
事前準備
- PC周辺の配線
- LiveShell.Proのセットアップ
-
Azureのアカウント作成
-
Azure Media Servicesアカウント作成
-
Azure Media Servicesのストリーミング占有ユニットを1以上にする
配信手順
PC周辺の配線
あくまでイメージです。
PCから出ているケーブル
DisplayLink社のドライバーが入っているUSBからのモニター出力のケーブルになります。HDMIは、絵と音を1つのケーブルで出力してくれますから、これでPCの絵と音を送出できます。これは簡単ですね!
ただし、ほとんどのPCにはDisplayLink社のドライバーが入っていないと思いますので、公式ドライバーをインストールしてください。
http://www.displaylink.com/support/downloads.php
エンコーダー
灰色の小型ハードウェアがLiveShell.Proになります。その上にあるのはWifiルーターです。今回は、LiveShell.Proから、Wifiルーターに無線で飛ばし、それをWifiルーターの4GネットワークでAzureに接続をしています。
ある一定以上のネットワークを配信用に確保するのは、本当に難しいです。有線LANでの接続を推奨します。LiveShell.Proの設定も有線LANの方が簡単です。
無線の場合は、他の無線や3G/4G網と混線しないように、5Ghz対の利用などの工夫が必要になる場合もあると思います。
PCの設定
PCのマイクの音を送るために、PCのサウンド設定を行います。
ここでは、PC音声の再生の出力先を、DisplayLinkのHDMIアダプターにします。
「マイク」の設定を変更します。
ここでは、PCのマイクを選択して[プロパティ]をクリックします。
これで、PCの絵と音が、HDMIアダプターに流れていきます。
セミナーなどではキーボードのタイプ音も入っちゃいますし、演台から人が移動してしまうと、聞きづらくなると思います。マイクの音が取れるとベストですが・・・
LiveShell.Proアカウントのセットアップ
Cerevoさんの方で、マニュアルを用意されています。以下を注意深く参照して、セットアップを行ってください。
LiveShell.Pro マニュアル:
http://shellprodoc-ja.cerevo.com/home
主なご注意点:
-
LiveShell.Proのインターネット接続ですが、Proxy設定が必要だったり、そこにWeb認証設定が必要だったりすると、うまくいきません。
http://shellprodoc-ja.cerevo.com/home/2- 有線LAN設定を行う場合、LiveShell.Proと、LiveShell.ProのDashboardアカウントのひも付けを「PIN」にて行います。ですが、LiveShell.Proがインターネット接続できないと、この「PIN」が表示されずセットアップが先に進みません。
- 無線LAN設定を行う場合は、PCからのマイクアウトで行いますが、業務PCのマイクはミュートになっている場合が多いです。この瞬間は音声を出すことをお忘れなく。
- Azure Media ServicesはLiveShell.Proの標準サービスではありません。そのためドキュメント内では「その他の配信サービス」という項目に読み替えて設定を行います。
RTMPサーバーのURLが必要になる事もあります。その場合は、Azure Media Servicesのチャネルの作成を先に行ってください。 - 3G\4Gや無線での視聴環境を考慮すると、複数のBitrateのデータを使うAdaptive Bitrate Streamingの利用をお勧めしています。LiveShell.Proからは、単一のビットレートのデータ配信しかできませんので、結果としてAzureからも単一ビットレートでの配信となります。
Azure Media Servicesへの配信
LiveShell.Proの設定が終わると、以下の様なLiveShell.ProのDashboardにリモートからログインして、各種設定がWebブラウザーを使って行えます。
LiveShell.Proは、設定したRTMPサーバーへの接続を何度も試みてくれます。先の画面では[Others] と出ている先のURLが、Azure Media Servicesのチャネルの[取り込み用URL]になります。
-
LiveShell.Proでの配信設定
Azure Media ServicesにRTMP配信する際には、事前定義のプリセットではマルチデバイスに正しく配信されませんので画面右上の [CUSTOM]から、配信設定を変更します。
- 「iフレーム挿入間隔」を2秒に1度にすることが推奨されます。
http://blogs.msdn.com/b/windowsazurej/archive/2014/10/09/blog-azure-media-services-rtmp-support-and-live-encoders.aspx - H.264の[プロファイル]ですが、配信先のスマートフォンのバージョンが古い場合は、「High」プロファイルに対応していないものもあります。そのため「Main」に変更をしています。
- [平均ビットレート]は、エンコーダーからの回線の状況や、配信対象のデバイスを考慮して適時変更してください。幾つかネットワークのアップストリーム帯域を確認するツール、Webサイトがありますから、それらで確認する事をお勧めします。
また、スマートフォンに常時2Mbpsの映像を流し続けますと・・・あっという間に1ヶ月のパケット利用量を消費してしまう可能性がありますので、3G/4Gのネットワークで視聴をしてもらう際には、配信側で低めに設定するのが良いと思います。
以下、今回のLiveShell.Proのエンコード設定です。
これで、Azure側へ送る準備が出来ました。
-
チャネルの作成
Azure Media Servicesにチャネルを作成します。
- Azure Media Servicesの画面の中で[チャネル]タブをクリックします。
- [新しいチャネルの追加]をクリックします。
-
新しいチャネルのパラメーターを設定して、画面右下のチェックをクリックします。
ここで重要な事は [ビデオの取り込みをコンピューターの現在のIPアドレスに制限する]のチェックボックスを外す事です。LiveShell.Proから配信しますので・・・ -
数分でチャネルが作成されます。上記設定では「開始」も同時に行っていますので、状態が[開始中] -> [準備完了]となったら配信準備が完了です。
チャネルが作成されると、「取り込みURL」が作成されます。これが、LiveShell.Proの「配信先URL」になります。 -
LiveShell.Proの配信先URLの設定
- LiveShell.ProのDashboardに戻り、画面右上の[設定]を押します。
-
画面右下の[変更]を押します。
-
[配信先URL]に、Azure Media Servicesのチャネルの[取り込みURL]を設定します。
LiveShell.Proで配信を開始していない場合は、[配信開始]を押します。
配信が始まると…
-
LiveShell.Proの画面は、[RTMP用の閲覧用URLを設定して視聴してください]という表示がされます。
Azure Media ServicesからRTMP配信はできませんので、このままにしてください。 -
LiveShell.Proのハードウェアのコンソールは、配信ビットレートをリアルタイムで表示してくれます。
-
Azure Media Servicesの管理画面では、プレビューの映像が確認できます。
これで、Azureに正しく映像が届いていることが確認できます。
ただ、この時点では「本番」に配信はされていません。
-
本番に配信をする
といっても、手順は一つです。
-
Azure管理画面の[ストリーミングの開始]を押す
この場合は、1時間分の映像と音声がAzure上に保存されます。ライブ配信中に1時間分は過去に戻ることができます。内部では「プログラム」が作成されています。このプログラムの時間は5分から25時間まで設定できます。
個別設定をする場合は、チャネルの名前の「→」をクリックします。そうしますと、プログラムの状況を確認いただけます。
チャネル、プログラム双方ともに「開始」中の状態のものを作成できる上限値が決まっています。
執筆時点では、以下の通りです。
- チャネルは5つ。
- プログラムは3つ。(作成自身は50できますが)
http://azure.microsoft.com/ja-jp/documentation/articles/media-services-quotas-and-limitations/
-
Playerで動作確認をする
[発行されたURL]は、Smooth Streaming用のものです。
Azure Media Servicesには、MPEG-DASH / HLS などの様々な配信プロトコルに動的に対応できるDynamic Packagingという機能があります。URL文字列の最後に 「(format=xxx)」を付与するだけで、プロトコル変換をしてくれます。https://msdn.microsoft.com/ja-jp/library/jj889436.aspx
例えば( format=mpd-time-csf) という文字列で、MPEG-DASHへ変換をしてくれますので、dashif.orgの以下のサイトでも視聴ができます。
http://dashif.org/reference/players/javascript/index.html
Azure Media Servicesのチャネルでは、以下の場合「リセット」が必要になります。
- 配信設定を変更した場合: ビットレート、フレームレートなど
RTMPエンコーダーからの接続が切れても、一定の時間以上は待ってくれます。ですので、LiveShell.Proが再接続をしてくると自動的に配信を開始してくれます。
まとめ
Azure Media Servicesでは、Smooth StreamingとRTMP対応のエンコーダーと連携して配信が出来ます。プロフェッショナルで使う大型のものから、PCベースでのソフトウェアエンコーダー。そして、今回ご紹介したLiveShell.Proの様にモバイル性の高いものまで幅広いです。
今後も機能強化が予定されていますので、皆さんのライブ配信を更に良いものに出来ればと思います。