HLS(HTTP Live Streaming)エンコーダ統合

アド マネージャー DAI は HLS のバージョン 3 をサポートしています。HLS のバージョン 3 に含まれない機能がある場合は、アド マネージャー アカウント チームにご相談ください。

サポートされている機能を確認する

機能 ライブリニア ビデオ オンデマンド(VOD)
EXTINF Supported  Supported
EXT-X-DATERANGE  Supported
SCTE35-IN Not supported
SCTE35-OUT Not supported
EXT-X-DISCONTINUITY Supported Supported
EXT-X-DISCONTINUITY-SEQUENCE Supported
EXT-X-ENDLIST Supported
EXT-X-I-FRAME-STREAM-INF Supported Supported
EXT-X-I-FRAMES-ONLY Supported Supported
EXT-X-INDEPENDENT-SEGMENTS Supported Not supported
EXT-X-KEY Supported Supported
EXT-X-MEDIA(レンディション グループ) Supported Supported
EXT-X-MEDIA-SEQUENCE Supported
EXT-X-PLAYLIST-TYPE Supported Supported
EXT-X-PROGRAM-DATE-TIME Supported Supported
EXT-X-STREAM-INF Supported Supported
AUDIO Supported Supported
AVERAGE-BANDWIDTH Supported Supported
BANDWIDTH Supported Supported
CLOSED CAPTIONS Supported Supported
CODECS Supported Supported
FRAMERATE Supported Supported
RESOLUTION Supported Supported
SUBTITLES Supported Supported
VIDEO Supported Supported
EXT-X-TARGETDURATION Supported Supported
EXT-X-VERSION Supported Supported

再生リストとレンディション グループ

GZIP コンテンツ エンコードを使用して再生リストを配信します(推奨)。マスター再生リストとセグメントのバリエーションには、絶対 URL か相対 URL を使用できます。

すべての広告アセットは、スレートを含む I-FRAME 再生リストを含むようにコード変換されます。アド マネージャー DAI は、コンテンツから I-FRAME 再生リストを生成することも、ビデオ / オーディオの組み合わせに基づいて新しいレンディション グループを生成することもありません。

  • ライブリニアの場合: I-FRAME 再生リストは、エンコーダ / パッケージャによって生成され調整されたものである必要があります。レンディション グループは、ライブ エンコーダから生成されたときに配信されます。
  • ビデオ オンデマンド(VOD)の場合: 必要に応じて、I-FRAME 再生リストの取り込み時に、そのマスター マニフェストに提供する必要があります。アド マネージャーでは、提供された I-FRAME 再生リストファイルへのアクセスまたは解析ができない場合にのみエラーになります。レンディション グループは、マスター マニフェストに提供されるときに配信されます。

コーデックと解像度

ライブ ストリームとビデオ オンデマンド(VOD)アセット向けの HLS マスター再生リストには、オプションの CODECS(コーデック)属性と RESOLUTION(解像度)属性が含まれている必要があります。CODEC と RESOLUTION の属性は、エンコード設定にマッチする最適な広告を見出すために使用されます。これらの値が指定されていない場合、帯域幅にのみ基づいて広告をマッチさせるため、広告とコンテンツで解像度とコーデックが一致しない可能性があります。これによりユーザー エクスペリエンスが低下し、異なるデバイス間で再生に関する問題が発生することがあります。

CODECS 属性には、オーディオ コーデックと動画コーデックの両方が含まれている必要があります。エンコーダがマスター再生リストの URL に、適宜バリエーションを追加、削除する可能性があります。

オーディオ コーデック

DAI は AAC オーディオ コーデックをサポートしています。また、AC-3 コーデックと E-AC-3 (ベータ版)  コーデック(現在ベータ版)もサポートしています。

バリエーション ストリームの URL は、すべての CODECSRESOLUTION の組み合わせで統一してください。
ユーザー側で再生時に問題が発生しないように、それぞれのバリーエーションの URL が統一されるようエンコーダが設定されているかを確認してください。

CODECS と RESOLUTION を含むマスター再生リスト

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:BANDWIDTH=694272,CODECS="avc1.77.41,mp4a.40.2",RESOLUTION=768x432
chunklist_b694272.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=202752,CODECS="avc1.66.31,mp4a.40.2",RESOLUTION=480x270
Chunklist_b202752.m3u8

セグメントの長さ

HLS メディア再生リストのセグメントの長さは浮動小数点数で指定してください。広告ブレークの正確な開始時間と終了時間を指定できるよう、浮動小数点の精度が求められます。長さの値が不正確な場合、配信されるストリームの広告ブレーク開始を決定するシステムが正常に動作しなくなる可能性があります。

#EXTINF を含むメディア再生リスト

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:26
#EXTINF:9.901,
http://media.example.com/wifi/segment26.ts
#EXTINF:9.901,
http://media.example.com/wifi/segment27.ts
#EXTINF:9.501,
http://media.example.com/wifi/segment28.ts

タイムスタンプの調整

バリエーションのメディア再生リスト内のプレゼンテーション タイムスタンプ(PTS)は位置を調整してください。P フレームと B フレームは他のフレームを参照してフレームをデコードします。H.264 コーデックは圧縮率を上げるために、隣接していないフレームも参照します。これらのフレームは他のフレームに依存してデコードとプレゼンテーションを行っているため、デコード タイムスタンプ(DTS)はフレームをデコードするシーケンスに、PTS はフレームを表示するシーケンスになります。アセットの再生中に異なるビットレートに対応する際、PTS の調整が重要になります。広告の挿入機能は、PTS を使って広告の挿入位置を検出します。

分割

メディア再生リストのすべての EXT-X-DISCONTINUITYEXT-X-DISCONTINUITY-SEQUENCE が必要です。EXT-X-DISCONTINUITY-SEQUENCE タグにより、同一のバリエーション ストリームや異なるバリエーション ストリームの複数のコンテンツを同期できます。

メディア暗号化

メディア コンテンツを暗号化する場合は、AES-128 か SAMPLE-AES で暗号化する必要があります。AES-128 では TS が暗号化またはスクランブルされるのに対し、SAMPLE‑AES では個々のメディア(音声や動画)がスクランブルされます。Apple Fairplay ストリームでは SAMPLE-AES が使用されます。

アド マネージャー DAI は、HLS ストリーム用の FairPlay DRM 技術をサポートしています。

#EXT-X-KEY を含むメディア再生リスト

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:26
#EXT-X-KEY:METHOD=AES-128,URI="https://media.example.com/asset/key1.php?id=<signature>",IV=<initialization vector>
#EXTINF:9.901,
http://media.example.com/wifi/segment26.ts
#EXTINF:9.901,
http://media.example.com/wifi/segment27.ts
#EXT-X-KEY:METHOD=AES-128,URI="https://media.example.com/asset/key2.php?id=<signature>"
#EXTINF:9.501,
http://media.example.com/wifi/segment28.ts

ビデオ オンデマンド エンコード

ミッドロールの調整

コンテンツ内でミッドロールの広告を配信する場合は、動画セグメントがあらかじめ調整されたものであるか、調整される必要があります。

DAI 向けのミッドロール広告ブレークは、ストリームの一般的な動画セグメント範囲に当てはまらない場合があります。たとえば、コンテンツが通常は 10 秒間のセグメントに分割されていたとしても、0:36(36 秒間)の広告ブレークが必要になる可能性があります。この場合、10 秒間の動画を 6 秒と 4 秒の 2 つのセグメントに分割すると正しい時間に広告が挿入されます。広告ブレークを有効にする動画セグメントの分割処理のことを「コンテンツの調整」と言います。

ご希望の広告ブレークの位置に広告を挿入できるようにするには、事前に調整をしたコンテンツを提供するか、アド マネージャーで調整が可能なコンテンツを提供してください。

GOP サイズ

メディアは 2 秒間隔のキーフレームか 2 秒の GOP(Group of Pictures)サイズでエンコードしてください。コンテンツは最も近いキーフレームにミッドロールの広告ブレークを挿入できるよう準備されます。キューポイントの 1 秒以内にキーフレームがない場合、広告の挿入がキューポイントより 1 秒遅れてしまい、再生中のユーザー エクスペリエンスが低下します。指定されたキューポイントから 1 秒以内にキーフレームが見つからない場合、広告ブレークが挿入されません。

コンテンツと広告がなめらかにつながるようにキューポイントの前後に 1~2 秒間の空白を作ってください。それで広告ブレーク前後の TV の画面が黒にフェードアウトされます。

字幕

サポートされる字幕形式は以下のとおりです。

  • 入力形式: TTML(サイドカー)、WebVTT(サイドカー)、CEA 608/708
  • 出力形式: TTML(サイドカー)、WebVTT(サイドカー)、WebVTT - HLS

アド マネージャーで入力形式から出力形式に変換されます。

ライブリニア エンコード

リニア放送やライブフィード向けの広告挿入スプライス ポイントを示す CUE-OUT ポイントと CUE-IN ポイントを再生リストに作成します。

#EXT-X-CUE-OUT:DURATION=<time>
#EXT-X-CUE-IN

EXT-X-CUE-OUT タグはスプライス開始ポイントを、EXT-X-CUE-IN はスプライス終了ポイントを示します。EXT-X-CUE-OUT は広告ブレークの終了を示す EXT-X-CUE-IN で終了してください。広告サーバーで、EXT-X-CUE-OUTEXT-X-CUE-IN の間のセクション全体が動画広告コンテンツで置き換えられます。

DURATION=<time> は必須です。おおよその長さを秒または広告ブレークの浮動小数点数で指定してください(EXT-X-CUE-INEXT-X-CUE-OUT の間の時間です)。EXT-X-CUE-OUT:<time> の代わりに #EXT-X-CUE-OUT:DURATION=<time> を使用することも可能です。

長さは整数か浮動小数値を使って秒で指定してください。

例を表示

例 1

スプライス開始ポイントと終了ポイント

#EXTINF:10,
http://media.example.com/fileSequence7796.ts
#EXTINF:6,
http://media.example.com/fileSequence7797.ts
#EXT-X-CUE-OUT:DURATION=30
#EXTINF:4,
http://media.example.com/fileSequence7798.ts
#EXTINF:10,
http://media.example.com/fileSequence7799.ts
#EXTINF:10,
http://media.example.com/fileSequence7800.ts
#EXTINF:6,
http://media.example.com/fileSequence7801.ts
#EXT-X-CUE-IN
#EXTINF:4,
http://media.example.com/fileSequence7802.ts
#EXTINF:10,
http://media.example.com/fileSequence7803.ts
#EXTINF:3,
http://media.example.com/fileSequence7804.ts

例 2

DAI 広告サーバーで、OUTIN の間のコンテンツが 30 秒間の広告動画コンテンツで置き換えられます。

#EXTINF:10,
http://media.example.com/fileSequence7796.ts
#EXTINF:6,
http://media.example.com/fileSequence7797.ts
#EXT-X-CUE-OUT:DURATION=30
#EXTINF:10,
http://ads.example.com/fileSequence0001.ts
#EXTINF:10,
http://ads.example.com/fileSequence0002.ts
#EXTINF:10,
http://ads.example.com/fileSequence0003.ts
#EXT-X-CUE-IN

#EXTINF:4,
http://media.example.com/fileSequence7802.ts
#EXTINF:10,
http://media.example.com/fileSequence7803.ts
#EXTINF:3,
http://media.example.com/fileSequence7804.ts

サポートされている広告マーカー

CUE-OUT / CUE-IN

AWS Elemental を含むいくつかのエンコード ソリューションでは、これらのマークアップ タイプが生成されます。

形式は次のとおりです。

CUE-OUT

#EXT-X-CUE-OUT:DURATION=10.50,K=V,K=V

#EXT-X-CUE-OUT:10.50,K=V,K=V

CUE-IN

#EXT-X-CUE-IN

CUE(Adobe Prime Time)

CUE-OUT

#EXT-X-CUE:ID=31264,TYPE="SpliceOut",DURATION=30.00,TIME=77892728.264567

CUE-IN

これらのマークアップには、明示的に CUE-IN を示すものはありません。代わりに、CUE-OUT の後の各セグメントは次のようにマークされます。

#EXT-X-CUE:ID=31264,TYPE="SpliceOut",DURATION=30.00,TIME=77892728.264567,ELAPSED=5.00

これは広告ブレーク内のセグメントの位置を示しています。CUE-IN マーカーは ELAPSED 属性の値とセグメントの長さを基に計算され、広告ブレークの最後のセグメントを示します。

DATERANGE

SCTE ターゲティング データは、このフォーマットではサポートされていません。

CUE-OUT

#EXT-X-DATERANGE:ID="splice-80f",PLANNED-DURATION=90.5,START-DATE="2017-03-24T13:46:04Z",SCTE35-OUT=0xFC301B00000000000000FFF00A05000001027FDF000000

PLANNED-DURATION 属性の値は、予定されている広告ブレークの長さとして使用されます。

CUE-IN

#EXT-X-DATERANGE:ID="splice-7ef",START-DATE="2017-03-24T13:38:04Z",SCTE35-IN=0xFC301B00000000000000FFF00A05000000FF7F5F0000000000007B7BA160

SCTE35 Binary Splice Insert

SCTE-35 のスプライスインとスプライス アウトは、HLS タグ内に時間シグナルで指定できます。SCTE 情報はバイナリ形式で利用可能で、送信シグナルのタイプを判別するためにデコードが必要になります。

CUE-OUT

#EXT-OATCLS-SCTE35:/DBcAAAAAAAAAP/wBQb//ciI8QBGAh1DVUVJXQk9EX+fAQ5FUDAxODAzODQwMDY2NiEEZAIZQ1VFSV0JPRF/3wABLit7AQVDMTQ2NDABAQEKQ1VFSQCAMTUwKnPhdcU=

CUE-IN

#EXT-OATCLS-SCTE35:/DBQAAAAAAAAAP/wBQb//Y2J9gA6AhRDVUVJXQk9EX+fAQVDMTQ2NDEAAAIiQ1VFSV0JQIB/3wACCSRHAQ5FUDAxODAzODQwMDY2NiAFZFg0zZU=

SCTE35 Binary Time Signal: Provider Ad Start/End

有効な CUE-OUT / CUE-IN と広告ブレーク ターゲティング情報が含まれているかどうかを判定するために、SCTE-35 バイナリ(Base64 エンコード)のデータのデコードと解析を行う必要があります。

たとえば、次のバイナリデータには有効な CUE-OUT シグナルが含まれています。

#EXT-OATCLS-SCTE35:/DBcAAAAAAAAAP/wBQb//ciI8QBGAh1DVUVJXQk9EX+fAQ5FUDAxODAzODQwMDY2NiEEZAIZQ1VFSV0JPRF/3wABLit7AQVDMTQ2NDABAQEKQ1VFSQCAMTUwKnPhdcU=

デコード後のメッセージには次のフィールドが含まれています。

  • splice_command_type: 値は 6 で、時間シグナルであることを意味します
  • segmentation_type_id: 時間シグナルの種類を示します

次の segmentation_type_id の値は、有効な CUE-OUT 時間シグナルとして認識されます。

48 : Provider Advertisement Start

EXT-X-CUE-OUT:DURATION と SCTE segment_duration の両方のフィールドで広告ブレークの長さが指定されている場合、DAI では EXT-X-CUE-OUT の値が使用されます。

次の segmentation_type_id の値(splice_command_type = 6 の場合)は、有効な CUE-IN 時間シグナルとして認識されます。

49 : Provider Advertisement End

SCTE35 Binary Time Signal: Provider Placement Opportunity

有効な CUE-OUT / CUE-IN と広告ブレーク ターゲティング情報が含まれているかどうかを判定するために、SCTE-35 バイナリ(Base64 エンコード)のデータのデコードと解析を行う必要があります。

たとえば、次のバイナリデータには有効な CUE-OUT シグナルが含まれています。

#EXT-OATCLS-SCTE35:/DBcAAAAAAAAAP/wBQb//ciI8QBGAh1DVUVJXQk9EX+fAQ5FUDAxODAzODQwMDY2NiEEZAIZQ1VFSV0JPRF/3wABLit7AQVDMTQ2NDABAQEKQ1VFSQCAMTUwKnPhdcU=

デコード後のメッセージには次のフィールドが含まれています。

  • splice_command_type: 値は 6 で、時間シグナルであることを意味します
  • segmentation_type_id: 時間シグナルの種類を示します

次の segmentation_type_id の値は、有効な CUE-OUT 時間シグナルとして認識されます。

52 : Provider Placement Opportunity Start

EXT-X-CUE-OUT:DURATION と SCTE segment_duration の両方のフィールドで広告ブレークの長さが指定されている場合、DAI では EXT-X-CUE-OUT の値が使用されます。

次の segmentation_type_id の値(splice_command_type = 6 の場合)は、有効な CUE-IN 時間シグナルとして認識されます。

53 : Provider Placement Opportunity End

SCTE-35 マークアップのマクロ

フィードに EXT-OATCLS-SCTE35 マークアップが含まれている場合は、メタデータが自動的に抽出され、カスタムの Key-Value で利用可能になります。カスタムの Key-Value を設定し、広告タグの生成時にその Key-Value をマクロとして挿入する必要があります。

SCTE-35 フィールド用に新しいカスタムの Key-Value を設定するときには、「scte35」のようなカスタムキーを使用します。マクロには、フィードで使用可能なフィールドのタイプに対応する値を設定します。

  • %%SPLICE_INSERT_EVENT_ID%%
  • %%SPLICE_INSERT_UPID%%
  • %%TIME_SIGNAL_EVENT_ID%%
  • %%TIME_SIGNAL_UPID%%
  • %%AFMM_CBC%%

最初の 3 つのマクロは、SCTE-35 メッセージ内で符号なし整数として指定され、10 進数の文字列に変換されます。%%TIME_SIGNAL_UPID%% は、0x 接頭辞を省いた小文字の 16 進数で設定されます。%%AFMM_CBC%% は、スプライス情報から CM ブレークコードを抽出します(フランスの AF2M 規格で必要です)。

よくある質問

  • 広告ブレークを早く終了させるにはどうすればよいですか?
    DAI ストリームがただちに広告ブレークを終了し、元のコンテンツを再び表示するようにするには、エンコーダがストリームに「CUE-IN」を送信する必要があります。
  • 広告ブレークを長くするにはどうすればよいですか?
    広告ブレークがユーザーに表示されている際に広告ブレークを長くする方法はありませんが、エンコーダが前の広告ブレークの「CUE-IN」の直後に追加で「CUE-OUT」をストリームに送信するようにすることはできます。それにより、広告ブレークを追加して新しく指定した広告を配信できます。
  • 表示する広告がない場合はどうなりますか?
    アド マネージャー DAI でライブ ストリームを設定した際の設定内容に応じて、スレート コンテンツとベース コンテンツのいずれかが表示されます。
この情報は役に立ちましたか?
改善できる点がありましたらお聞かせください。