Azure 管理ポータルを使用したライブ ストリーミングの開始


このポストは、9 月 10 日に投稿された Getting Started with Live Streaming Using the Azure Management Portal の翻訳です。

このたびマイクロソフトは、Azure Media Services の各種ライブ サービスのパブリック プレビュー開始を発表しました。これらのライブ サービスは、NBC Sports がイギリス プレミア リーグ、NHL ホッケー、サンデー ナイト フットボール、ソチ オリンピックなどのスポーツ生中継をマルチプラットフォームで配信するために使用してきたものと同じです。先日閉幕した FIFA ワールド カップでも、世界の放送局 10 社に採用されました。そしてこのたび、高い安定性、スケーラビリティ、パフォーマンスを誇るこれらのサービスを、すべての Media Services ユーザーが利用できるようになりました。

ライブ ストリーミング機能のさまざまな面と使用方法については、今週投稿する複数の記事で取り上げています。この記事では、ライブ ストリーミングの基礎を説明した後、具体的なシナリオ (ライブ デスクトップ Web キャスト) に沿って解説します。この記事では、コードを使用せずに管理ポータルでさまざまな処理を行います。SDK を使用して同じアクションを自動化する方法については、今週投稿する別の記事で説明しています。

ライブ ストリーミングの基本コンポーネント

はじめに、後述するエンドツーエンド ソリューションの基本コンポーネントの概要を説明します。

  • Azure アカウントとサブスクリプション – Microsoft Azure アカウントをまだお持ちでない場合、まず http://azure.com にアクセスして作成する必要があります。購入前に無料で試用することができます。
  • Azure Media Services アカウント – Media Services アカウントをまだお持ちでない場合、作成方法の説明 (http://azure.microsoft.com/ja-jp/documentation/articles/media-services-create-account/) に従って作成してください。
  • ビデオ カメラ – この記事のサンプルではノート PC の Web カメラを使用しますが、ほぼどのカメラでもかまいません。USB のようなデジタル出力が可能な場合、PC に直接接続して出力をエンコードできます。デジタル出力ができない場合はビデオ キャプチャ カードが必要です。
  • ライブ エンコーダー – 現時点では、Azure Media Services ではフラグメント MP4/Smooth Streaming と RTMP の 2 つのライブ取り込みプロトコルがサポートされています。RTMP が普及したため、無料の Flash Media Encoder や FFMPEG のほか、低価格の Wirecast、NewTek の高価格製品である Tricaster、さらに Cisco や Elemental、Image などが販売しているプロフェッショナル向け製品まで、幅広い選択肢からエンコーダーを選択できます。この後のサンプルでは、Telestream の Wirecast をインストールしたノート PC を使用します。まだエンコーダーのご用意がない場合、こちらのサイト (英語) から Wirecast をダウンロードすれば、試用ライセンスで使用できます。ビデオ エンコーディングでは CPU が大量に消費されるため、私が自分のノート PC でエンコーディングを行うときには、品質レベルを 3 つに制限し、ビット レートを低めにしています。CPU の処理能力が低いノート PC などを使用する際は、CPU 使用率を確認してください。常に 70% を超える場合は、エンコーディング プロファイルの品質レベル数を減らすか、ビットレートおよび解像度を下げましょう。
  • 高速インターネット接続 – ライブ ビデオを配信するには、エンコーダー出力のビット レートの変動による影響を受けないよう、送信するビデオのビット レートの 1.5 倍以上の安定した送信速度を持つインターネット接続が必要です。たとえば、この後で構築するソリューションでは、ライブ ストリームの品質レベル ("レンディション") を 400、600、および 900 Kbps の 3 つにし、総ビット レートを 1,900 Kbps にしています。したがって、少なくとも 2,850 Kbps (2.85 Mbps) の速度が必要です。
  • Azure Media Services チャネル – Azure Media Services でのライブ ストリーミングに必要な唯一の新規コンポーネントです。エンコーダーの出力のための取り込みポイントを提供します。
  • Azure Media Services アセット – Media Services のアセットとは、すべてのオーディオおよびビデオのほか、ストリームに関連付けられたメタデータを格納するコンテナーです。
  • Azure Media Services プログラム – プログラムとは、チャネルで受信したストリームをアセットとして書き込み始めるためにチャネル上に作成する、Azure Media Services のエンティティです。
  • Azure Media Services ストリーミング ロケーター – ストリーミングに使用するアセットに対してロケーターを作成します。
  • Azure Media Services ストリーミング エンドポイントおよびストリーミング ユニット – ストリーミング エンドポイントにより、ライブおよび VOD アセットを取得できる URL が提供されます。また、ストリーミング エンドポイントによって動的パッケージング機能が提供され、ストリーム配信が確実に行われます。ストリーミング ユニットは、プロビジョニングされてストリーミング エンドポイントとなり、保証最大スループットが決まります。各ストリーミング ユニットのストリーミング出力容量は 200 Mbps です。必要に応じてストリーミング エンドポイントに追加して、容量を増やすことができます。
  • Azure CDN – Azure CDN がごく近い将来、Azure Media Services に統合されます。統合後は、ストリーミング エンドポイントに新たな設定が加わり、CDN エンドポイントをストリーミング エンドポイントに自動的に接続するかどうかを指定できるようになります。当面は、ストリーミング エンドポイントから直接ストリーム配信することが可能です。お使いのストリーミング エンドポイントに合わせた Azure CDN のセットアップをご希望の場合は、Azure サポートにご依頼ください。
  • ビデオ プレーヤー – Azure Media Services のストリーミング エンドポイントが提供する動的パッケージング機能により、配信先の各デバイスに必要なストリーミング プロトコルを使用してライブ ストリームを出力できます。この後で構築するソリューションでは、iOS 以外のすべてのプラットフォーム (デスクトップ ブラウザー、Android、Windows Phone) 用に MPEG-DASH と HTML5/DASH.js プレーヤーを使用します。iOS 用には、HLS バージョン 3 を使用します。動的パッケージング機能の詳細については、Nick の Channel 9 のビデオ (英語) および MSDN のドキュメントをご覧ください。

シナリオ: Web キャスト イベント

では、これから実践するシナリオについて少し説明します。以下で紹介する手順では、PC の Web カメラからトレーニングを放映するデスクトップ Web キャストのためのソリューションを構築していきます。この Web キャストを "イベント" と呼びます。ライブ ストリーミング用語で、始まりと終わりのあるライブ ストリームを意味します。これとは対照的に、常に放映が行われているテレビのチャネルのように終わりのないものを "リニア" ストリームと呼びます。リニア ストリームでのライブ サービスの使用方法については、別のブログ記事で取り上げます。

イベント前のセットアップ

ここからは、イベントを実行する準備として、イベント前のセットアップ手順を説明します。この準備手順はイベント前のどのタイミングで実行してもかまいません。"放送" 開始直前に急いで行う必要はありません。

Azure Media Services のチャネルとストリーミング エンドポイントの作成

まず、エンコーダーからのライブ ストリームの受信と、すべてのクライアント再生デバイスに配信するためのストリーミングとパッケージングに必要なインフラストラクチャを準備します。それには Azure 管理ポータルを使用します。

1. http://azure.com にアクセスして上部メニュー バーの [PORTAL] をクリックし、Azure 管理ポータルを開きます。Microsoft ID を使用してログインすると、管理ポータルが表示されます。

2. 左側の垂直メニューの [MEDIA SERVICES] というメニュー項目をクリックします。過去に作成したすべての Media Services アカウントが右側に表示されます。

3. このサンプルの構築に使用する Media Services アカウントをクリックします。ここでは、"jasonblog" という Media Services アカウントを使用します。Media Services アカウントのすべての詳細が表示されます。上部メニュー バーから、Media Services のすべてのエンティティ タイプの作成および管理が可能です。Media Services を使用されたことのある方ならお気付きになると思いますが、プレビューのマークの付いた [CHANNELS] というメニュー項目が上部メニュー バーに新たに加わっています。ここから、Azure Media Services のチャネルを管理します。

4. 上部メニュー バーの [CHANNELS] をクリックします。アカウントのチャネル リストが表示されます (チャネルが存在する場合)。

5. この時点ではチャネルがないため、「You have no channels. Add one to get started!」というメッセージが表示されます。すぐ下の [ADD NEW CHANNEL] をクリックします。チャネルに設定するプロパティを入力するダイアログが表示されます。

6. [Create a new Live Channel] ダイアログで、チャネル名を入力します (ここでは、「webcast」と入力します)。次に、使用する取り込みプロトコルを指定します。この例では RTMP を出力する Wirecast を使用するので、既定のままにします。下部の 3 つのチェックボックスのうち、[Start the new channel now] チェックボックスをオンのままにします。これにより、後でチャネルを開始する手間が省けます。現時点で "既定" のストリーミング エンドポイントにストリーミング ユニットがプロビジョニングされていない場合、次の [Add one streaming unit] というチェックボックスは既定でオンになっています。その場合、オンのままにします。プロビジョニングが自動的に実行され、この後の手間を省くことができます。最後の [Restrict video ingest to my computer’s current IP address] というチェックボックスがオンの場合、IP アクセス制御リスト (ACL) がチャネルに適用され、お使いのコンピューターからの入力のみ受け入れるよう制限されます。このチェックボックスはオフにしてください。以下は、これらの設定をすべて完了したダイアログのスクリーンショットです。

7. [Create a new Live Channel] ダイアログの右下隅のチェックマーク ボタンをクリックすると、新規チャネルが作成されて開始されると共に、新規ストリーミング ユニットが "既定" のストリーミング エンドポイントに追加されます。画面下部のステータス バーに、チャネルが作成されて開始されたことが示されます。これらの手順が完了するまでに数分間かかります。完了してから次の手順に進んでください。

エンコーダーの構成と起動

Cenk Dingiloglu がエンコーダーの構成について別ブログで説明しています。詳細は次のURLより参照してください。http://azure.microsoft.com/blog/2014/09/18/azure-media-services-rtmp-support-and-live-encoders/

Media Services に必要なインフラストラクチャの準備ができたので、次に Wirecast をセットアップし、チャネルでストリームの配信を開始します。Telestream は現在、必要な手順を減らすために Azure Media Services 用の "配信先" の設定に関して最終作業を行っているところです。しかし、これはまだ提供されていないので、手動による手順すべてをひととおり説明します。時間を短縮するために、必要な設定情報のほとんどを Wirecast の "サンプル" としてドキュメント化しました。このサンプルの作成手順の詳細は省略します。後日、エンコーダーに関する詳細な記事が Cenk Dingiloglu から別途投稿される予定です。

1. サンプルを http://jasonsueblog.blob.core.windows.net/wirecastdocument/WirecastDocument.wcst からダウンロードします。

2. Wirecast を開き、ダウンロードしたサンプルを開きます。以下のように、サンプルに記載されているメディアが Wirecast で認識できないことを示すエラーが表示されます。かまわずに、[Cancel] をクリックします。このエラーは、お使いのカメラ デバイスが、私がセットアップに使用したものと異なるため表示されます。これには次のステップで対応します。

3. Wirecast の UI でカメラ ソースを追加します。UI の下部に 3 行のソースがあります。1 行目の "+" にマウス ポインターを合わせ、カメラ アイコンをクリックします。現在お使いの PC に接続されているカメラのリストが表示されたら、ここで使用するものを選択します。選択すると、その行に新規ソースが表示され、カメラからのライブ フィードが表示されます。

4. Wirecast の [Output] メニューをクリックし、[Output Settings...] を選択します。私が作成したサンプルに沿って操作しているので、次のようなダイアログが表示されます。ストリームを 400、600、900 Kbps の 3 つの品質レベルでエンコードするように設定されています。400 Kbps の品質レベルでは、H.264 ベースライン プロファイルを使用してエンコードすることで、古い Android デバイスをサポートします。600 および 900 Kbps の品質レベルでは、より高い品質を提供するメイン プロファイルを使用します。この時点で未入力なのは、ストリームをプッシュする配信先の "アドレス" のみです。これは次のステップで入力します。

5. Azure 管理ポータルに戻り、チャネル リストの中から使用するチャネルを見つけます。[INGEST URL] 列にマウス ポインターを合わせ、右側のコピー アイコンをクリックします。これで、このチャネルの取り込み URL がクリップボードにコピーされます。

6. Wirecast の [Output Settings] ダイアログに戻り、取り込み URL を [Address] テキスト ボックスに貼り付けます。エンコードする 3 つの品質レベルすべてに対し、この手順を繰り返します。つまり、ダイアログの左側にある [RTMP Flash Server] の各項目をクリックし、それぞれアドレスを設定します。

7. [Output Settings] ダイアログで [OK] ボタンをクリックします。

8. ステップ 3 で作成したカメラ ソースをクリックします。これで映像が UI の [Preview] セクションに表示されます。

9. 次に、[—>] ボタンをクリックして [Preview] の映像を [Live] に表示し、UI の上部の 2 つの場所にカメラ ソースが表示されるようにします。

10. これで、Wirecast の構成はすべて完了です。Wirecast の UI の左上隅にある [Stream] ボタンをクリックすれば、Azure Media Services チャネルへのストリームの配信を開始できます。正常に動作すると、配信中であることを示す赤いドットがボタンに表示されます。

11. ストリームが正常に受信されているかどうかをチェックするには、チャネルのプレビュー公開ポイントから表示して、受信内容を直接確認します。Azure 管理ポータルに戻り、下部のコマンド バーで [PLAY] をクリックします。サブコマンド リストが表示されたら、[Play Preview URL] をクリックします。ポータル内でビデオ プレーヤーが開き、チャネルのプレビュー URL に接続されます。

メモ: なんらかの理由でエンコーダーを停止した後、再開する必要がある場合、まず Azure 管理ポータルで [RESET] コマンドをクリックしてチャネルをリセットしてください

イベントの開始とストリームの再生

ストリームがチャネルに配信されるようになったので、イベントの開始に移ります。アセット、プログラム、およびストリーミング ロケーターを作成し、ストリーミングをアーカイブし、それをストリーミング エンドポイントから視聴者に公開しましょう。これらすべてを 1 つのステップで実行するショートカットがポータルにあります。

プログラムの作成と開始

1. Azure 管理ポータルの [CHANNELS] セクションに戻ります (まだ戻っていない場合)。アカウントに複数のチャネルがある場合、先ほどセットアップしたチャネルが選択されている (青で強調表示されている) ことを確認します。ページ下部のコマンド バーで [START STREAMING] をクリックし、確認画面が表示されたら [YES] をクリックします。コマンドが完了すると、[PUBLISH URL] 列に URL が表示されます。この URL を使用して、ストリーミング エンドポイントからストリームを取得できます。

ライブ ストリームの再生

ライブ ストリームがアセットに格納されるようになり、それがストリーミング エンドポイントから取得され、現在サポートされているすべてのプロトコル (MPEG-DASH、HLS バージョン 3、HLS バージョン 4、HDS、および Smooth Streaming) に動的にパッケージングされます。これらの機能により、Flash コントロールで Smooth を使用するデスクトップ ブラウザー、また HLS バージョン 3 を使用する iOS および Android デバイスでのストリーム再生が可能になります。

1. Azure 管理ポータルで、使用するチャネルの [PUBLISH URL] にマウス ポインターを合わせ、コピー アイコンをクリックすると、URL がクリップボードにコピーされます。

2. この発行 URL を任意のテキスト エディターに貼り付けます。これは Smooth Streaming の URL で、「http://<アカウント名>.origin.mediaservices.windows.net/<ロケーターの GUID>/<ストリームの GUID>.ism/manifest」のようになっています。この URL をもう一度貼り付け、URL の最後に「(format=mpd-time-csf)」を付け加えます。これにより、ストリーミング エンドポイントに対して、ストリームを MPEG-DASH 用にパッケージングするよう指定できます。URL をさらにもう一度貼り付け、今度は「(format=m3u8-aapl-v3)」を付け加えます。これで、ストリーミング エンドポイントに対して、ストリームを HLS バージョン 3 用にパッケージングするよう指定できます。

3. Windows PC または Mac (最新の Internet Explorer や Chrome など、Media Source Extensions をサポートするブラウザーが必要) で、http://dashplayer.azurewebsites.net (英語) にアクセスします。これは、ストリームのテスト用に私が構築したサンプルの DASH.js video プレーヤーです。MPEG-DASH 用の URL を上部のテキスト ボックスに貼り付け、[Load] をクリックします。Android デバイスおよび Windows Phone でも、同様に操作します。

メモ: サンプルの DASH プレーヤーは、DASH 用の URL を URL のクエリ パラメーターとしても受け取れます。つまり、次のような URL を構築して、各デバイスに配信することが可能です。http://dashplayer.azurewebsites.net/?URL=http://<アカウント名>.origin.mediaservices.windows.net/../...sm/manifest(format=mpd-time-csf)

4. iOS デバイスの場合は Safari を開き、アドレス バーに HLS バージョン 3 用の URL を入力します。アドレス バーにこれを入力することで、ネイティブ プレーヤーでストリームをすばやく再生できます。また、ソースを HLS 用の URL に設定したビデオ タグを含む HTML5 ページを作成したり、同様のネイティブ アプリケーションを構築したりすることもできます。

イベントの停止

イベントを終了するには、プログラムを停止し、アセットへのストリームのプッシュを停止する必要があります。これは簡単なワン ステップの操作です。

1. Azure 管理ポータルに戻ってチャネルを選択し、下部のコマンド バーで [STOP STREAMING] コマンドをクリックして、表示される確認画面で [YES] をクリックします。これで、そのチャネルで実行していたプログラムが停止され、削除されます。

ライブ サービスには、ライブからオンデマンドにアセットをシームレスかつ瞬時に移行できるという大きな特長があります。この時点でビデオ プレーヤーに戻り、ストリームを再生すると、ストリームの URL は変わりませんが、ライブではなくオンデマンドで配信されます。

クリーンアップ

別のイベントを実行する場合、実行中のイベントはそのままでかまいません。先ほどと同じように、チャネルで新規プログラムを開始するだけです。しかし、終了する場合は、準備したインフラストラクチャの一部または全部を破棄します。

1. まずエンコーダーでは、Wirecast の [Stream] ボタンをクリックしてストリームのプッシュを停止した後、アプリケーションを閉じます。

2. これで、チャネルも停止できます。Azure 管理ポータルでもう一度チャネルを選択し (まだ選択していない場合)、下部のコマンド バーで [STOP CHANNEL] コマンドをクリックします。処理が完了すると、チャネルの状態が "Stopped" になり、リソースを消費しなくなります。チャネルをずっとこの状態にしておけば、料金はかかりません。再度使用する場合は、[START CHANNEL] コマンドをクリックすれば、同じ取り込み URL で再開されます。エンコーダーの再構成は不要です。

3. 最後に、ストリーミング エンドポイントを処理します。ライブ イベントのアーカイブをオンデマンド ストリームとして提供し続ける場合、ストリーム エンドポイントをそのままにしておく必要があります。ストリーミングを終了する場合は、管理ポータルの [STREAMING ENDPOINTS] タブに移動し、ストリーミング エンドポイント (通常は "既定") を選択して、下部のコマンド バーで [STOP] コマンドをクリックします。

まとめと次回の更新について

このブログ記事では、コードを使用せずに Azure 管理ポータルから、ライブ イベントのセットアップ、実行、破棄 (必要な場合) を行う手順を説明しました。近日に投稿する記事で、マイクロソフトがテスト済みの RTMP エンコーダーのリストとそのセットアップ方法のほか、SDK を使用してライブ イベントをセットアップおよび実行する方法、ライブ ストリームへのコンテンツ セキュリティの適用、リニア ストリームの実行について取り上げる予定です。

Comments (0)

Skip to main content