リニア DAI ストリームで時間指定メタデータを処理する

プラットフォームを選択: HTML5 Roku

インタラクティブ メディア広告(IMA)ダイナミック広告挿入 SDK(DAI)は、ストリームのメディア セグメントに埋め込まれたメタデータ情報(インバンド メタデータ)またはストリーミング マニフェスト ファイルに埋め込まれたメタデータ情報(インマニフェスト メタデータ)を使用して、視聴者の位置とクライアントサイドの広告イベントをトラッキングします。メタデータは、再生されるストリームの種類に応じて、さまざまな形式で DAI ストリームから取得できます。IMA DAI SDK は、単一の API を介してすべてのメタデータ形式を処理します。

メタデータのキャプチャと IMA DAI SDK への転送は、アプリ側で行う必要があります。SDK には、この情報を渡す StreamManager.onMessage() メソッドが用意されています。このメソッドは、roVideo ポートによって提供される msg オブジェクトの形式でメタデータを転送します。これらのオブジェクトは IMA DAI SDK によって処理され、広告イベントのタイミングが設定されます。引数は 1 つです。

  • msg: roVideo ポートによって提供される msg 型オブジェクト。

メタデータのサンプルコード

roVideo ポートからメタデータを処理し、StreamManager.onMessage() を介して IMA DAI SDK に渡す方法の例を次に示します。

Sub runLoop()
  ' Forward all timed metadata events to IMA.
  m.top.video.timedMetaDataSelectionKeys = ["*"]

  ' Cycle through all the fields and set listeners.
  ' IMPORTANT: Failure to listen to the position and timedmetadata fields could
  ' result in ad impressions not being reported.
  m.port = CreateObject("roMessagePort")
  fields = m.top.video.getFields()
  for each field in fields
    m.top.video.observeField(field, m.port)
  end for

  while True
    msg = wait(1000, m.port)
    if m.top.video = invalid
      print "exiting"
      exit while
    end if

    m.streamManager.onMessage(msg)
    currentTime = m.top.video.position
    If currentTime > 3 And not m.top.adPlaying
       m.top.video.enableTrickPlay = true
    End If
  end while
End Sub

ループ処理ストリーム メタデータをアプリに組み込む方法について詳しくは、IMA Roku スタートガイドをご覧ください。ガイドのイベント リスナーとストリーム開始セクションには、メタデータ処理ループが含まれています。

ストリーム形式とコンテナの要件

Roku でクライアントサイド広告トラッキングを有効にするには、サポートされているコンテナ形式でパッケージ化された DAI ストリームでメディア セグメントを使用する必要があります。このプロセスにより、Roku OS はタイムド メタデータを抽出できます。

Roku Media Player は、次のコンテナ形式でのインバンド ID3 メタデータの抽出をサポートしています。

  • MPEG-2 トランスポート ストリーム(TS)
  • フラグメント化された MP4
  • 共通メディア アプリケーション フォーマット(CMAF)

Roku OS のタイムド メタデータでは、未加工の Advanced Audio Coding(AAC)セグメントなどの未加工の基本音声ストリームはサポートされていません。Roku メディア プレーヤーは、未加工の AAC 音声ストリームから ID3 タイミング メタデータを抽出できません。そのため、IMA SDK はメタデータ イベントを受信できず、広告のインプレッションやトラッキング ビーコンを送信できません。音声のみのストリームと音声レンディション ストリームについては、TS、MP4、CMAF などのサポートされているコンテナ形式のパッケージングを使用したストリームを使用する必要があります。

HLS CMAF ストリーム

Common Media Application Framework(CMAF)を使用するリニア DAI HLS ストリームは、CMAF を介した ID3 標準に沿って、インバンド eMSGv1 ボックスで時間指定メタデータを渡します。これらの eMSG ボックスは各メディア セグメントの先頭に埋め込まれ、各 ID3 eMSG にはストリームの最後の不連続点からの相対的な PTS が含まれます。

IMA Roku の場合、すべての HLS CMAF ストリームは eMSGv0 形式を使用してインバンド ID3 データを送信します。IMA は、eMSGv0 形式で提供される情報と動画オブジェクトの情報を組み合わせます。

HLS CMAF ストリーム ID3 イベントを適切に解析できるようにするには、StreamRequest.videoObject を使用してストリーム リクエストで動画オブジェクトを送信する必要があります。