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 dalamadTagMacros
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
.
Integrasi Google Ad Manager
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¯o=%%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¯o=123
Penanda iklan HLS
EXT-X-DATERANGE
Penggunaan #EXT-X-DATERANGE
ditentukan dalam spesifikasi HTTP Live Streaming:
- Tag
#EXT-X-DATERANGE
dengan atributSCTE35-OUT
menunjukkan titik gabungan awal dari jeda iklan. - Tag
#EXT-X-DATERANGE
dengan atributSCTE35-IN
menunjukkan titik gabungan akhir langsung dari jeda iklan. - Nilai untuk
SCTE35-OUT
danSCTE35-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
atauEXT-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.