フィルタ

Media Services ロゴ v3


警告

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

コンテンツを顧客に配信する (イベントのライブ ストリーミングまたはビデオ オン デマンド) 際に、既定の資産のマニフェスト ファイルに記述された内容だけではクライアントのニーズに柔軟に対応できない場合があります。 Azure Media Services には、定義済みのフィルターに基づいた動的マニフェストが用意されています。

フィルターは、次のような操作を顧客に許可するサーバー側のルールです。

  • ビデオ全体を再生するのではなく、ビデオの 1 つのセクションのみを再生する。 次に例を示します。
    • マニフェストを減らして、ライブ イベントのサブクリップのみを表示する場合 (「サブクリップ フィルター処理」)、または
    • ビデオの開始をトリミングする場合 (「ビデオのトリミング」)
  • コンテンツの再生に使用するデバイスでサポートされている演奏や言語のトラックのみを指定して配信する ("演奏フィルタ―処理")。
  • プレゼンテーション ウィンドウ (DVR) を調整し、プレーヤーの DVR ウィンドウの長さを限定する ("プレゼンテーション ウィンドウの調整")。

Media Services では、アカウント フィルターと、コンテンツの資産フィルターを作成することができます。 さらに、事前に作成したフィルターをストリーミング ロケーターに関連付けることができます。

フィルターの種類

2 種類のフィルターがあります。

  • アカウント フィルター (グローバル) - Azure Media Services アカウントのすべてのアセットに適用可能。アカウントの有効期間があります。
  • アセット フィルター (ローカル) - 作成時にフィルターに関連付けられたアセットにのみ適用可能。アセットの有効期間があります。

アカウント フィルター タイプとアセット フィルター タイプは、フィルターの定義/記述に関して、まったく同じプロパティを持ちます。 ただしアセット フィルターを作成するときは、フィルターを関連付けるアセットの名前を指定する必要があります。

実際のシナリオに応じて、アセット フィルターとアカウント フィルターのどちらのタイプのフィルターが適しているかを判断することになります。 アカウント フィルターは、デバイス プロファイル (演奏フィルター処理) に適しています。一方、アセット フィルターは、特定のアセットをトリミングする目的で使用できます。

フィルターは、次のプロパティを使用して記述します。

名前 説明
firstQuality フィルターの最高品質ビットレートです。
presentationTimeRange ライブ イベント マニフェストのプレゼンテーション時間範囲。 このプロパティは、マニフェストの開始/終了ポイント、プレゼンテーション ウィンドウの長さ、ライブ開始位置をフィルタリングする目的で使用します。
詳細については、「PresentationTimeRange」を参照してください。
tracks トラックの選択条件です。 詳細については、「tracks」を参照してください。

presentationTimeRange

このプロパティは、アセット フィルターで使用します。 このプロパティをアカウント フィルターで設定することは推奨できません。

名前 説明
startTimestamp ビデオ オン デマンド (VoD) またはライブ ストリーミングに適用されます。
これは long 値であり、ストリームの絶対的な開始点を表します。 この値は最も近い次の GOP 開始に丸められます。 単位はタイムスケールであるため、15 秒の場合、startTimestamp は 150000000 となります。
プレイリスト (マニフェスト) に含まれるフラグメントをトリミングするには、startTimestamp と endTimestamp を使用します。
たとえば、既定のタイムスケールを使用する startTimestamp=40000000 と endTimestamp=100000000 では、VoD プレゼンテーションの 4 秒から 10 秒までのフラグメントを含むプレイリストが生成されます。 その境界をフラグメントがまたいだ場合、フラグメント全体がマニフェストに含められます。
endTimestamp ビデオ オン デマンド (VOD) が対象となります。
ライブ ストリーミング プレゼンテーションでは、ダイアログを表示せずに無視され、プレゼンテーションが終了してストリームが VoD になったときに適用されます。
これは long 値であり、プレゼンテーションの絶対的な終了点を表します。最も近い次の GOP 開始に丸められます。 単位はタイムスケールであるため、3 分の場合、endTimestamp は 1800000000 となります。
プレイリスト (マニフェスト) に含まれるフラグメントをトリミングするには、startTimestamp と endTimestamp を使用します。
たとえば、既定のタイムスケールを使用する startTimestamp=40000000 と endTimestamp=100000000 では、VoD プレゼンテーションの 4 秒から 10 秒までのフラグメントを含むプレイリストが生成されます。 その境界をフラグメントがまたいだ場合、フラグメント全体がマニフェストに含められます。
timescale プレゼンテーション時間の範囲のすべてのタイムスタンプと期間が対象となります。1 秒間のインクリメント数として指定されます。
既定値は 10000000 (1 秒間に 1,000 万インクリメント) です。各インクリメントの長さは 100 ナノ秒となります。 ただし、ビデオのソースや、クラウドでエンコードしたライブ イベントを使用している場合は、値が異なる場合があります (規定値は 90Khz、ビデオは 90000 です)
たとえば、startTimestamp を 30 秒に設定する場合、既定のタイムスケールを使うときに 300000000 の値を使用します。 アセットのマニフェストで、ビデオ トラックのタイムスケールが設定したスケール内にあることを確認してください。 エンコードでライブ イベントを使用する場合、ビデオ トラックの場合のタイムスケールは 90Khz (90000)、オーディオ トラックの場合は 48khz (48000) になります。
liveBackoffDuration ライブ ストリーミングのみに適用されます。
この値では、クライアントがシークできる最新のライブ位置が定義されます。
このプロパティを使用すると、ライブ再生位置を遅らせ、プレーヤーのためにサーバー側のバッファーを作成することができます。
このプロパティの単位はタイムスケールです (下記参照)。
最大ライブ バックオフ期間は 300 秒 (3000000000) です。
たとえば、2000000000 の値は、使用可能な最新のコンテンツが、リアル ライブ エッジから 20 秒遅れていることを意味します。
presentationWindowDuration ライブ ストリーミングのみに適用されます。
プレイリストに含めるフラグメントのスライディング ウィンドウを適用するには、presentationWindowDuration を使用します。
このプロパティの単位はタイムスケールです (下記参照)。
たとえば、2 分のスライディング ウィンドウを適用するには、presentationWindowDuration を 1200000000 に設定します。 ライブ エッジの 2 分以内のメディアがプレイリストに含められます。 その境界をフラグメントがまたいだ場合、フラグメント全体がプレイリストに含められます。 最小プレゼンテーション ウィンドウ期間は 60 秒です。
forceEndTimestamp ライブ ストリーミングのみに適用されます。
endTimestamp プロパティが存在する必要があるかどうかを示します。 true の場合、endTimestamp を指定する必要があります。そうしないと、不適切な要求コードが返されます。
使用できる値: false、true。

tracks

動的に作成されたマニフェストに含める必要があるストリーム (ライブ ストリーミングまたはビデオ オン デマンド) のトラックに基づいて、フィルター トラック プロパティ条件 (FilterTrackPropertyConditions) のリストを指定します。 フィルターは、ANDOR の論理演算を使用して組み合わせます。

フィルター トラック プロパティ条件は、トラックの種類、値 (以下の表で説明します)、演算 (Equal、NotEqual) を記述したものです。

名前 説明
Bitrate フィルタリングにトラックのビットレートを使用します。

最良の値は、1 秒あたりのビット数で表したビットレートの範囲です。 たとえば、「0-2427000」と指定します。

注: 特定のビットレート値、たとえば 250000 (bps) を使用することもできますが、厳密なビットレートはアセットごとに変動するので、この方法は推奨されません。
FourCC フィルタリングにトラックの FourCC 値を使用します。

この値は、RFC 6381 で規定されたコーデック形式の最初の要素です。 現在は、次のコーデックがサポートされています。
ビデオ: "avc1"、"hev1"、"hvc1"
オーディオ: "mp4a"、"ec-3"

アセットのトラックの FourCC 値を調べるには、マニフェスト ファイルを取得して調査します。
Language フィルタリングにトラックの言語を使用します。

この値は、含めたい言語のタグです (RFC 5646 で規定)。 例: "en"。
名前 フィルタリングにトラックの名前を使用します。
Type フィルタリングにトラックの種類を使用します。

"video"、"audio"、"text" のいずれかの値を指定できます。

次の例では、ライブ ストリーミングのフィルターを定義します。

{
  "properties": {
    "presentationTimeRange": {
      "startTimestamp": 0,
      "endTimestamp": 170000000,
      "presentationWindowDuration": 9223372036854776000,
      "liveBackoffDuration": 0,
      "timescale": 10000000,
      "forceEndTimestamp": false
    },
    "firstQuality": {
      "bitrate": 128000
    },
    "tracks": [
      {
        "trackSelections": [
          {
            "property": "Type",
            "operation": "Equal",
            "value": "Audio"
          },
          {
            "property": "Language",
            "operation": "NotEqual",
            "value": "en"
          },
          {
            "property": "FourCC",
            "operation": "NotEqual",
            "value": "EC-3"
          }
        ]
      },
      {
        "trackSelections": [
          {
            "property": "Type",
            "operation": "Equal",
            "value": "Video"
          },
          {
            "property": "Bitrate",
            "operation": "Equal",
            "value": "3000000-5000000"
          }
        ]
      }
    ]
  }
}

ストリーミング ロケーターの作成時に HLS マニフェストまたは DASH マニフェストをフィルター処理する

Media Services では、ストリーミング ロケーター エンティティの filter プロパティにフィルターのコレクションを渡すことで、事前にフィルター処理されたストリーミング ロケーターを作成できます。 これにより、ストリーミング ロケーター上のすべてのマニフェストを事前にフィルター処理できます。 元のマニフェストはこのストリーミング ロケーターから利用できなくなり、フィルタリングされたストリーミング ロケーターから DASH または HLS の URL を要求するクライアントには、フィルタリングされた応答のみがアクセス可能となります。 これは、アセットの一部のみを発行し、HLS または DASH マニフェスト URL のクエリ文字列を操作することで、ユーザーがアセットの完全な元のマニフェストにアクセスできないようにする場合に役立ちます。

ストリーミング ロケーターに対する資産またはアカウント フィルターの一覧を指定できます。 ダイナミック パッケージャーでは、クライアントで URL に指定されるフィルターと共にこのフィルターの一覧が適用されます。 この組み合わせによって、URL 内のフィルターとストリーミング ロケーターに指定されたフィルターに基づく動的マニフェストが生成されます。

フィルターの更新

フィルターとストリーミング ロケーターはその場で更新できますが、フロントエンド Web サーバーで更新されるまでに最大で 10 秒かかる場合があることに注意してください。また、既に運用環境で公開、使用されているのと同じストリーミング ロケーターを更新する場合、コンテンツのダウンストリーム CDN キャッシュに問題が発生する可能性があります。

特に CDN が有効になっている場合は、アクティブに公開されているストリーミング ロケーターに関連付けられているフィルターの定義を更新することは推奨しません。 ストリーミング サーバーと CDN には内部キャッシュが存在する可能性があり、その結果として古いキャッシュ データが返される場合があります。

フィルター定義の変更が必要な場合は、新しいフィルターを作成してそれをストリーミング ロケーターの URL に追加するか、または更新されたフィルターを直接参照する新しいストリーミング ロケーターを公開することを検討してください。

ヘルプとサポート

質問がある場合は Media Services に問い合わせるか、次のいずれかの方法で更新内容に従ってください。