Dynamic Packager を使用してマニフェストをフィルター処理する

Media Services ロゴ v3


警告

Azure Media Services は、2024 年 6 月 30 日に廃止されます。 詳細については、「 AMS 廃止ガイド」を参照してください。

アダプティブ ビットレート ストリーミング コンテンツをデバイスに配信するときは、特定のデバイス機能または利用可能なネットワーク帯域幅をターゲットにするために、マニフェストの複数のバージョンを公開することが必要な場合があります。 Dynamic Packager を使用すると、特定のコーデック、解像度、ビットレート、およびオーディオ トラックの組み合わせをその場で除外できるフィルターを指定できます。 フィルター処理により、複数のコピーを作成する必要がなくなります。 必要なのは、ターゲット デバイス (iOS、Android、SmartTV、またはブラウザー) とネットワーク機能 (高帯域幅、モバイル、または低帯域幅の各シナリオ) に合わせて構成されたフィルターの特定のセットを含む新しい URL を発行することだけです。 この場合、クライアントはクエリ文字列によって (利用可能なアセット フィルターまたはアカウント フィルターを指定して) コンテンツのストリーミングを操作したり、フィルターを使用してストリームの特定のセクションをストリーミングしたりできます。

いくつかの配信シナリオでは、ユーザーが特定のトラックにアクセスできないようにする必要があります。 たとえば、HD トラックを含むマニフェストを、特定のレベルの利用者には発行したくない場合があります。 または、追加トラックのメリットを受けない特定のデバイスへの配信コストを削減するために、特定のアダプティブ ビットレート (ABR) トラックを削除したい場合があります。 この場合、あらかじめ作成しておいたフィルターのリストを、作成時にストリーミング ロケーターに関連付けることができます。 その場合、コンテンツのストリーミング方法は、ストリーミング ロケーターによって定義されるため、クライアントでは操作できません。

ストリーミング ロケーターでのフィルターの指定に、クライアントが URL で指定する追加のデバイス固有フィルターを加えた、複合的なフィルタリングを実行できます。 この組み合わせは、メタデータやイベント ストリーム、オーディオ言語、説明的なオーディオ トラックなどの追加トラックを制限するために役立ちます。

このように、ストリームにさまざまなフィルターを指定できることで、強力な動的マニフェスト操作ソリューションが提供され、ターゲット デバイスの複数のユースケース シナリオをターゲットにすることが可能になります。 このトピックでは、動的マニフェストに関連する概念を説明し、この機能を使用するシナリオの例を示します。

Note

アセットやその既定のマニフェストが動的マニフェストによって変更されることはありません。

マニフェストの概要

Azure Media Services では、HLS、MPEG DASH、Smooth Streaming プロトコルがサポートされます。 ストリーミング クライアント マニフェスト (HLS のマスター再生リスト、DASH の Media Presentation Description [MPD]、および Smooth Streaming) は、URL 内の形式セレクターに基づいて、ダイナミック パッケージの一部として動的に生成されます。 詳しくは、一般的なオンデマンド ワークフローでの配信プロトコルをご覧ください。

マニフェスト ファイルを取得して調査する

動的に作成されたマニフェストに含めるべきストリーム (ライブまたはビデオ オン デマンド [VOD]) のトラックに基づいて、一連のフィルター トラック プロパティ条件を指定します。 トラックのプロパティを取得して調査するためには、まず Smooth Streaming マニフェストを読み込む必要があります。

ビデオ ストリームのビットレートを監視する

Azure Media Player のデモ ページを使用して、ビデオ ストリームのビットレートを監視します。 デモ ページの [診断] タブに診断情報が表示されます。

azure メディア プレーヤーの診断

例 :クエリ文字列にフィルターを含む URL

ABR ストリーミング プロトコルにフィルターを適用できます。HLS、MPEG-DASH、および Smooth Streaming) に適用できます。 次の表に、フィルターを含んだ URL の例をいくつか示します。

Protocol
HLS https://amsv3account-usw22.streaming.media.azure.net/fecebb23-46f6-490d-8b70-203e86b0df58/bigbuckbunny.ism/manifest(format=m3u8-aapl,filter=myAccountFilter)
MPEG DASH https://amsv3account-usw22.streaming.media.azure.net/fecebb23-46f6-490d-8b70-203e86b0df58/bigbuckbunny.ism/manifest(format=mpd-time-csf,filter=myAssetFilter)
スムーズ ストリーミング https://amsv3account-usw22.streaming.media.azure.net/fecebb23-46f6-490d-8b70-203e86b0df58/bigbuckbunny.ism/manifest(filter=myAssetFilter)

演奏フィルター処理

アセットを複数のエンコード プロファイル (H.264 Baseline、H.264 高、AACL、AACH、Dolby Digital Plus) と複数の品質ビットレートにエンコードすることを選択できます。 ただし、クライアント デバイスによっては、一部のアセットのプロファイルやビットレートをサポートしていない場合があります。 たとえば、古いバージョンの Android デバイスでは H.264 Baseline+AACL のみがサポートされます。 メリットが得られないデバイスに高いビットレートを送信すると、帯域幅とデバイスの計算が無駄になります。 このようなデバイスでは、表示用にスケールダウンするためだけに、取得した情報をすべてデコードしなくてはなりません。

動的マニフェストの場合、デバイス プロファイル (携帯電話、コンソール、HD/SD など) を作成し、各プロファイルの一部としてトラックや品質を含めることができます。 これは、演奏フィルター処理と呼ばれます。 次の図はその例を示しています。

レンダリング フィルター 2 図

次の図の上部には、フィルターのないアセットの HLS マニフェストが示されています。 (7 つの演奏すべてが含まれています。) 左下の図には、"ott" という名前のフィルターが適用された HLS マニフェストが表示されています。 "ott" フィルターでは、1 Mbps より低いビットレートをすべて削除するように指定されるので、下位 2 つの品質レベルが応答で除去されています。 右下の図には、"mobile" という名前のフィルターが適用された HLS マニフェストが表示されています。 "mobile" フィルターでは、解像度が 720 p を超える演奏を削除するように指定されるので、2 つの 1080 p の演奏が除去されました。

レンダリング フィルター図

言語トラックを削除する

アセットには、英語、スペイン語、フランス語などの複数のオーディオ言語が含まれる場合があります。 通常、Player SDK マネージャーには、既定のオーディオ トラックと、ユーザーによって選択された使用可能なオーディオ トラックがあります。

このような Player SDK の開発は、デバイス固有のプレーヤー フレームワークによって異なる実装が必要になるため困難です。 また、一部のプラットフォームでは Player API に制限があり、オーディオ選択機能が含まれません。このため、ユーザーは既定のオーディオ トラックを選択、変更できません。アセット フィルターを使用すれば、目的のオーディオ言語のみを含むフィルターを作成することで、動作を制御できます。

言語フィルター図

アセットの開始をトリミングする

ほとんどのライブ ストリーミング イベントでは、実際のイベントの前にオペレータがいくつかのテストを行います。 たとえば、イベントの開始前に、"プログラムが間もなく開始します" などのスレートを追加する場合があります。

プログラムをアーカイブすると、テストとスレートのデータもアーカイブされ、プレゼンテーションに追加されます。 しかし、この情報をクライアントに表示すべきではありません。 動的マニフェストを使用することで、開始時刻フィルターを作成し、マニフェストから不要なデータを削除できます。

トリミング フィルター図

ライブ アーカイブからサブクリップ (ビュー) を作成する

多くのライブ イベントは長時間実行され、ライブ アーカイブに複数のイベントが含まれる場合があります。 ライブ イベントの終了後は、ブロードキャスタが、ライブ アーカイブを論理プログラムの開始と終了シーケンスに分割できます。

ライブ アーカイブの後処理や個別のアセットの作成を行わずに、これらの仮想プログラムを個別に発行できます (これでは CDN にキャッシュされた既存のフラグメントを利用できません)。 このような仮想プログラムの例として、フットボールやバスケットボールの試合のクオーター、野球のイニング、スポーツ プログラムの各イベントなどが挙げられます。

動的マニフェストでは、開始時刻と終了時刻を使用してフィルターを作成し、ライブ アーカイブ上に仮想ビューを作成できます。

サブスクリップ フィルター図

フィルター選択されたアセットを次に示します。

スキーイング フィルター図

プレゼンテーション ウィンドウ (DVR) を調整する

現在、Azure Media Services では、期間を 1 分から 25 時間の間で構成できる循環アーカイブが提供されています。 マニフェストのフィルタ―処理を使用して、メディアを削除せずにアーカイブ上に DVR のローリングウィンドウを作成できます。 ブロードキャスタが、限定的な DVR ウィンドウを配信してライブ エッジとともに移動しつつ、規模の大きいアーカイブ ウインドウも確保しておく必要があるといったシナリオはよくあります。 ブロードキャスターは、クリップを強調表示するために DVR ウィンドウ外のデータを使用し、さまざまなデバイスに合わせて異なる DVR ウィンドウを用意する必要があります。 たとえば、ほとんどのモバイル デバイスでは大きな DVR ウィンドウに対応していません (DVR ウィンドウはモバイル デバイスでは 2 分、デスクトップ クライアントでは 1 時間使用できます)。

dvr フィルター図

LiveBackoff (ライブ位置) を調整する

マニフェストのフィルター処理を使用して、ライブ プログラムのライブ エッジから数秒を削除できます。 フィルター処理により、ブロードキャスターはプレビュー公開ポイントでプレゼンテーションを視聴し、視聴者がストリームを受信する前の広告の挿入ポイントを作成できます (30 秒後退します)。 ブロードキャスターは、広告のチャンスの前にクライアントが情報を受信して処理するよう、これらの広告をクライアント フレームワークにプッシュできます。

広告のサポートに加えて、LiveBackoff 設定はビューアーの位置の調整に使用することもできます。これにより、クライアントの接続が安定せず、ライブ エッジに到達した場合でも、サーバーからフラグメントを取得できます。 このようにすると、クライアントで HTTP 404 または 412 エラーは発生しません。

ライブ バックオフ フィルター図

複数のルールを 1 つのフィルターに組み合わせる

複数のフィルター処理ルールを 1 つのフィルターに組み合わせることができます。 たとえば、"範囲ルール" を定義してスレートをライブ アーカイブから削除したり、使用可能なビット レートをフィルターで除外することもできます。 複数のフィルター処理ルールを適用した場合、最終的な結果は、すべての規則の共通部分になります。

複数ルール フィルター図

複数のフィルターを結合する (フィルターの構成)

1 つの URL で複数のフィルターを結合することもできます。 次のシナリオは、フィルターを結合する理由を示しています。

  1. Android や iPad などのモバイル デバイス用にビデオ品質をフィルター処理する必要があります (ビデオ品質を制限するため)。 不要な品質を取り除くために、デバイスのプロファイルに適したアカウント フィルターを作成します。 新たに関連付けを行わなくても、同じ Media Services アカウントに含まれるすべてのアセットにアカウント フィルターを使用できます。
  2. また、資産の開始時刻と終了時刻を調整することもできます。 トリミングを行うには、アセット フィルターを作成し、開始時刻と終了時刻を設定します。
  3. これらの両方のフィルターを結合する必要があります。 結合しない場合、品質フィルタリングをトリミング フィルターに追加する必要がありますが、このようにするとフィルターが使いづらくなります。

フィルターを結合するには、フィルター名をマニフェスト/再生リスト URL にセミコロン区切り形式で設定します。 品質をフィルター処理する MyMobileDevice という名前のフィルターと、特定の開始時刻を設定する MyStartTime という名前のフィルターがあると想定します。 最大 3 つのフィルターを結合できます。

考慮事項と制限事項

  • VOD フィルターの場合、forceEndTimestamppresentationWindowDurationliveBackoffDuration の値は設定しないでください。 これらは、ライブ フィルターのシナリオでのみ使用されます。

  • 動的マニフェストは GOP 境界 (キー フレーム) 内で動作するため、トリミングの正確度は GOP に応じます。

  • アカウント フィルターとアセット フィルターには同じフィルター名を使用できます。 アセット フィルターの方が優先順位が高く、アカウント フィルターをオーバーライドします。

  • フィルターを更新した場合、ストリーミング エンドポイントでルールが更新されるまで最大 2 分かかります。 フィルターを使用してコンテンツを処理した (さらに、プロキシと CDN のキャッシュにコンテンツをキャッシュした) 場合、これらのフィルターを更新するとプレーヤーでエラーが発生します。 フィルターを更新した後にキャッシュをクリアすることをお勧めします。 このオプションが利用できない場合は、別のフィルターを使用することを検討してください。

  • マニフェストは、顧客が手動でダウンロードして厳密な開始タイム スタンプとタイム スケールを解析する必要があります。

    • アセットのトラックのプロパティを調べるには、マニフェスト ファイルを取得して調査します。
    • アセット フィルターのタイムスタンプのプロパティを設定するための数式は次のとおりです。
      startTimestamp = <マニフェストにおける開始時間> + <所定のフィルター開始時間 (秒)> * タイムスケール

ヘルプとサポート

Media Services に質問がある場合は、次のいずれかの方法で更新プログラムに従ってください。

  • Q & A
  • Stack Overflow。 質問に タグを付け、 を使用します azure-media-services
  • @MSFTAzureMedia するか 、@AzureSupport を使用してサポートを要求します。
  • Azure portalからサポート チケットを開きます。