Penanda iklan

Panduan ini menjelaskan penanda iklan yang didukung oleh Video Stitcher API. Video Stitcher API mengidentifikasi batas jeda iklan berdasarkan penanda iklan di manifes HLS/DASH sumber live stream, dan melakukan penggabungan iklan dalam jeda iklan untuk setiap sesi live stream.

Sebelum memulai

Pastikan Anda memahami konsep pengantar dan terminologi di Video Stitcher API. Untuk informasi selengkapnya, lihat Ringkasan teknis.

Lihat spesifikasi SCTE-35 Pesan Isyarat Penyisipan Program Digital untuk Kabel.

Perintah SCTE-35

Penanda iklan live stream diwakili oleh sinyal SCTE-35 standar. Dalam daftar perintah SCTE-35, Video Stitcher API mendukung dua perintah berikut:

  • splice_insert
  • time_signal

Dengan time_signal, Anda dapat memberikan metadata arbitrer tambahan untuk jeda iklan terkait dalam ID program unik (UPID) segmentasi pertama.

Video Stitcher API mengharapkan segmentation_upid_type adalah 0x0C, yang merupakan singkatan dari MPU(). private_data di MPU() harus berupa string JSON berenkode base64, tempat kunci JSON tertentu dicadangkan untuk tujuan khusus berikut:

  • %%AD_TAG_ID%%: Menentukan tag iklan yang akan digunakan untuk jeda iklan. ID tag iklan harus berupa salah satu kunci dalam adTagMacros sesi live.
  • %%SLATE_ID%%: Menentukan slate yang akan digunakan untuk jeda iklan. ID slate harus cocok dengan ID untuk slate yang telah dibuat di project Google Cloud yang sama.

Semua pasangan nilai kunci lainnya dalam payload UPID digunakan untuk penggantian makro tag iklan.

Misalnya, jika URI tag iklan adalah https://example.com?key=[foo], dan private_data adalah eyJmb28iOiJiYXIifQ==, yang merupakan representasi base64 dari {"foo":"bar"}, Video Stitcher API akan menggantikan [foo] dengan bar, dan membuat permintaan tag iklan ke https://example.com?key=bar.

Untuk alur kerja integrasi Google Ad Manager, pesan SCTE35 dapat berisi nilai tertentu yang dapat diganti di tag iklan. Lihat daftar makro yang didukung.

Pastikan adTagUri yang terdaftar pada konfigurasi langsung berisi makro yang dipilih.

Misalnya, jika pesan SCTE35 meneruskan nilai untuk %%SPLICE_INSERT_EVENT_ID%%, pastikan makro ada di adTagUri seperti yang ditunjukkan oleh contoh berikut:

AD_TAG_URI&macro=%%SPLICE_INSERT_EVENT_ID%%

Saat Video Stitcher API meminta metadata iklan dan pesan SCTE35 splice_insert memiliki splice_insert_event_id yang ditetapkan ke 123, tag iklan berikut akan digunakan:

AD_TAG_URI&macro=123

Penanda iklan HLS

EXT-X-DATERANGE

Penggunaan #EXT-X-DATERANGE ditentukan dalam spesifikasi HTTP Live Streaming:

  • Tag #EXT-X-DATERANGE dengan atribut SCTE35-OUT menunjukkan titik gabungan awal dari jeda iklan.
  • Tag #EXT-X-DATERANGE dengan atribut SCTE35-IN menunjukkan titik gabungan akhir langsung dari jeda iklan.
  • Nilai untuk SCTE35-OUT dan SCTE35-IN diharapkan akan dienkode dengan heksadesimal.

Contoh:

#EXT-X-DATERANGE:ID="111",START-DATE=START_DATE,SCTE35-OUT=0xFC302000000000000000FFF00F050000006F7FFF7E002932E0000000000000235EE5EF
...
#EXT-X-DATERANGE:ID="111",START-DATE=START_DATE,END-DATE=END_DATE,SCTE35-IN=0xFC302000000000000000FFF00F050000006F7F7F7E002932E0000000000000D56C4036

EXT-X-CUE-OUT dan EXT-X-CUE-IN

Tag #EXT-X-CUE-OUT menunjukkan waktu mulai jeda iklan segera, dan tag #EXT-X-CUE-IN menunjukkan akhir langsung jeda iklan.

Tag #EXT-OATCLS-SCTE35 dapat digunakan untuk pesan SCTE-35, dan nilainya diharapkan dienkode base64.

Contoh (tanpa pesan SCTE-35):

#EXT-X-CUE-OUT:DURATION=30
...
#EXT-X-CUE-IN

Contoh (dengan pesan SCTE-35):

#EXT-OATCLS-SCTE35:/DBBAAAAAAAAAP/wBQb+AAaXgAArAilDVUVJAAAAb3//AAApMuAMFXslJUFEX1RBR19JRCUlOnRhZy0xfTQAALOJefk=
#EXT-X-CUE-OUT:30
...
#EXT-X-CUE-IN

Jika durasi tag EXT-X-CUE-OUT ditentukan, nilai tersebut akan lebih diutamakan, meskipun durasi jeda iklan dalam pesan SCTE-35 bertentangan dengan nilai tersebut. Jika durasi tag EXT-X-CUE-OUT tidak ditentukan dan durasi tag ditentukan dalam pesan SCTE-35 terkait, nilai dari pesan SCTE-35 akan digunakan.

Penanda iklan DASH

Saat ini, Video Stitcher API hanya mendukung manifes DASH multi-periode. Dalam manifes DASH multi-periode, jeda iklan harus diwakili oleh Period dengan aliran peristiwa yang berisi penanda isyarat keluar. Penanda isyarat tidak diperlukan karena akhir periode jeda iklan menunjukkan akhir dari jeda iklan.

Jika beberapa peristiwa isyarat keluar ditampilkan dalam aliran peristiwa SCTE-35 periode jeda iklan, Video Stitcher API hanya akan menggunakan peristiwa pertama. Waktu presentasi peristiwa isyarat keluar diabaikan karena waktu mulai jeda sama dengan waktu mulai periode.

Berikut adalah daftar schemeIdUri yang didukung untuk aliran data peristiwa SCTE-35:

  • urn:scte:scte35:2014:xml+bin
  • urn:scte:scte35:2013:xml

urn:scte:scte35:2014:xml+bin

Aliran peristiwa yang schemeIdUri-nya ditetapkan ke urn:scte:scte35:2014:xml+bin berisi peristiwa yang mewakili pesan SCTE-35 dalam biner berenkode base64.

Contoh:

  <Period start="PT444334H55M0.010S" id="break-1">
    <EventStream schemeIdUri="urn:scte:scte35:2014:xml+bin" timescale="90000">
      <Event presentationTime="0" duration="5400000" id="1">
        <Signal xmlns="urn:scte:scte35:2014:xml+bin">
          <Binary xmlns="urn:scte:scte35:2014:xml+bin">/DBTAAAAAAAAAP/wBQb+AAaXgAA9AjtDVUVJAAAAAH//AABSZcAMJ3siJSVBRF9UQUdfSUQlJSI6InRhZy0xIiwiZGFzaCI6InRydWUifTQAABxkspA=</Binary>
        </Signal>
      </Event>
    </EventStream>
    ...
  </Period>

urn:scte:scte35:2013:xml

Aliran peristiwa yang schemeIdUri ditetapkan ke urn:scte:scte35:2013:xml berisi peristiwa yang mewakili pesan SCTE-35 dalam XML yang jelas.

Contoh:

  <Period start="PT444334H55M0.010S" id="break-1">
    <EventStream timescale="90000" schemeIdUri="urn:scte:scte35:2013:xml">
      <Event duration="5400000">
        <scte35:SpliceInfoSection protocolVersion="0" ptsAdjustment="140429" tier="4095">
          <scte35:SpliceInsert spliceEventId="1" spliceEventCancelIndicator="false" outOfNetworkIndicator="true" spliceImmediateFlag="false" uniqueProgramId="1" availNum="1" availsExpected="1">
            <scte35:Program><scte35:SpliceTime ptsTime="5672624400"/></scte35:Program>
            <scte35:BreakDuration autoReturn="true" duration="5400000"/>
          </scte35:SpliceInsert>
        </scte35:SpliceInfoSection>
      </Event>
    </EventStream>
    ...
  </Period>

Notifikasi jeda iklan awal untuk live stream

Untuk penggabungan live, tag iklan diproses secara sinkron saat Video Stitcher API menerima penanda iklan isyarat keluar dalam manifes live stream. Pemrosesan sinkron ini memicu sejumlah besar permintaan tag iklan dan menyebabkan penundaan yang lama untuk permintaan pemutaran sesi live jika streaming padat penduduknya.

Notifikasi jeda iklan awal (EABN) memberi Video Stitcher API lebih banyak waktu untuk menyiapkan iklan dengan memberi tahu API tentang jeda iklan yang akan datang.

Notifikasi jeda iklan awal HLS

Untuk memberi tahu API tentang jeda iklan yang akan datang agar API dapat menyiapkan iklan terlebih dahulu, playlist HLS live stream harus:

  • Gunakan #EXT-X-DATERANGE atau EXT-X-CUE-OUT sebagai penanda iklan
  • Mengulangi penanda iklan isyarat keluar di manifes sumber live stream

#EXT-X-DATERANGE

Saat encoder sumber menjadwalkan jeda iklan yang akan datang, encoder dapat menyisipkan penanda isyarat keluar #EXT-X-DATERANGE ke dalam manifes sumber. Atribut X-TYPE penanda menunjukkan jenis penanda iklan; untuk notifikasi jeda iklan awal, nilai untuk X-TYPE diharapkan EABN. Atribut START-TIME penanda menunjukkan waktu mulai jeda iklan yang sebenarnya atau yang direncanakan. Atribut DURATION penanda diperlukan untuk menunjukkan durasi jeda iklan. Penanda ini disebut cue-out EABN.

Di awal jeda iklan yang sebenarnya, encoder sumber harus menyisipkan penanda isyarat keluar #EXT-X-DATERANGE ke dalam manifes sumber. Atribut ID penanda harus sama dengan sinyal keluar EABN yang sesuai. START-TIME penanda harus sama dengan waktu media segmen saat penanda ini disisipkan. Penanda ini disebut sinyal keluar langsung.

Manifes contoh berikut berisi satu isyarat keluar EABN, satu isyarat keluar langsung, dan satu isyarat masuk:

#EXTM3U
#EXT-X-TARGETDURATION:4
#EXT-X-VERSION:7
#EXT-X-PROGRAM-DATE-TIME:2020-11-08T21:11:20.976Z
#EXT-X-MEDIA-SEQUENCE:239959
#EXT-X-DISCONTINUITY-SEQUENCE:2
#EXT-X-DATERANGE:ID="2415919105",X-TYPE="EABN",START-DATE="2020-11-08T21:11:28.976Z",DURATION=29.988,SCTE35-OUT=0xFC303...
#EXTINF:4.000,
1028/segment_239959.ts
#EXTINF:4.000,
1028/segment_239960.ts
#EXT-X-DATERANGE:ID="2415919105",START-DATE="2020-11-08T21:11:28.976Z",DURATION=29.988,SCTE35-OUT=0xFC303...
#EXTINF:4.000,
1028/segment_239961.ts
#EXTINF:4.000,
1028/segment_239962.ts
#EXTINF:4.000,
1028/segment_239963.ts
...
#EXT-X-DATERANGE:ID="2415919105",END-DATE="2020-11-08T21:11:48.976Z",SCTE35-IN=0xFC303...
#EXTINF:4.000,
1028/segment_239968.ts

#EXT-X-CUE-OUT

  • Menggunakan #EXT-X-CUE-OUT sebagai penanda iklan
  • Mengulangi penanda iklan isyarat keluar di manifes sumber live stream

Saat encoder sumber menjadwalkan jeda iklan yang akan datang, encoder juga dapat menyisipkan penanda isyarat keluar #EXT-X-CUE-OUT ke dalam manifes sumber. Atribut X-TYPE penanda menunjukkan jenis penanda iklan; untuk notifikasi jeda iklan awal, nilai untuk X-TYPE diharapkan EABN. Atribut DURATION penanda harus menunjukkan durasi jeda iklan. Penanda ini disebut cue-out EABN.

Di awal jeda iklan yang sebenarnya, encoder sumber harus menyisipkan penanda isyarat keluar #EXT-X-CUE-OUT ke dalam manifes sumber. Atribut ID penanda harus sama dengan sinyal keluar EABN yang sesuai. Penanda ini disebut sinyal keluar langsung.

Manifes contoh berikut berisi satu isyarat keluar EABN, satu isyarat keluar langsung, dan satu isyarat masuk:

#EXTM3U
#EXT-X-TARGETDURATION:4
#EXT-X-VERSION:7
#EXT-X-PROGRAM-DATE-TIME:2020-11-08T21:11:20.976Z
#EXT-X-MEDIA-SEQUENCE:239959
#EXT-X-DISCONTINUITY-SEQUENCE:2
#EXT-OATCLS-SCTE35:0xFC303...
#EXT-X-CUE-OUT:ID="2415919105",X-TYPE="EABN",DURATION=29.988
#EXTINF:4.000,
1028/segment_239959.ts
#EXTINF:4.000,
1028/segment_239960.ts
#EXT-OATCLS-SCTE35:0xFC303...
#EXT-X-CUE-OUT:ID="2415919105",DURATION=29.988
#EXTINF:4.000,
1028/segment_239961.ts
#EXTINF:4.000,
1028/segment_239962.ts
#EXTINF:4.000,
1028/segment_239963.ts
...
#EXT-X-CUE-IN:ID="2415919105"
#EXTINF:4.000,
1028/segment_239968.ts

Notifikasi jeda iklan awal DASH

Untuk memberi tahu API tentang jeda iklan yang akan datang sehingga API dapat menyiapkan iklan terlebih dahulu, manifes live stream DASH harus mengulangi Peristiwa penanda iklan di Main Period dan Ad Break Period.

Tampilan pertama di Main Period memberi tahu API tentang jeda iklan yang akan datang, dan tampilan kedua di Ad Break Period menunjukkan jeda iklan yang akan segera dimulai.

Berikut adalah contoh manifesnya:

<MPD>
<Period id="1">
   <!-- Main Period -->
   <EventStream timescale="90000"  schemeIdUri="urn:scte:scte35:2013:xml">
     <Event duration="5400000" presentationTime="53460000" id="1">
       <scte35:SpliceInfoSection>
          <scte35:SpliceInsert outOfNetworkIndicator="true" spliceImmediateFlag="true">
            <scte35:BreakDuration autoReturn="true" duration="5400000"/>
            </scte35:SpliceInsert>
        </scte35:SpliceInfoSection>
      </Event>
    </EventStream>
   ...
</Period>

<Period start="PT9M54S" id="2">
    <!-- Ad Break Period -->
   <EventStream timescale="90000"  schemeIdUri="urn:scte:scte35:2013:xml">
     <Event duration="5400000" id="1">
       <scte35:SpliceInfoSection>
          <scte35:SpliceInsert outOfNetworkIndicator="true" spliceImmediateFlag="true">
            <scte35:BreakDuration autoReturn="true" duration="5400000"/>
            </scte35:SpliceInsert>
        </scte35:SpliceInfoSection>
      </Event>
    </EventStream>
   ...
</Period>

<Period start="PT10M54S" id="3">
    <!-- Main Period -->
    ...
</Period>
</MPD>

Langkah selanjutnya

Pelajari cara menyelesaikan tugas Video Stitcher API tertentu.