Dengan Video Stitcher API, Anda membuat sesi video on-demand (VOD) setiap kali Anda menyisipkan iklan secara dinamis sebelum ditayangkan ke perangkat klien. Saat Anda membuat sesi, responsnya akan menyertakan URL pemutaran dan informasi tentang iklan yang Anda sisipkan ke dalam video.
Dokumen ini menjelaskan cara membuat sesi VOD. Untuk detail selengkapnya, lihat dokumentasi REST.
Menentukan sesi
Untuk membuat sesi VOD, sediakan kolom berikut:
sourceUri
: Wajib diisi. Menentukan URL ke aset video yang akan disisipkan iklan. Video Stitcher API menampilkan URL pemutaran HLS jika URL yang disediakan mereferensikan manifes HLS; juga, URL pemutaran DASH akan ditampilkan jika kolom ini mereferensikan manifes DASH.adTagUri
: Wajib diisi. Menentukan URL server iklan yang menampilkan metadata iklan. Secara default, tayangan iklan dipicu di sisi server saat perangkat klien mengambil segmen video iklan.adTracking
: Wajib diisi. Menentukan apakah pemutar klien diharapkan akan memicu peristiwa pemutaran dan aktivitas, atau apakah Video Stitcher API diharapkan memicu peristiwa pemutaran atas nama pemutar klien. Untuk informasi lebih lanjut tentang pelacakan iklan sisi klien, lihat Menangani pelacakan iklan klien VOD.manifestOptions
: Opsional. Menentukan rendisi video yang dihasilkan dalam manifes video yang digabungkan. Kolom ini juga mendukung pengurutan rendisi dalam manifes video yang digabungkan. Untuk mengetahui informasi selengkapnya, lihat dokumentasi opsi manifes.
Membuat sesi
Untuk membuat sesi video yang digabungkan, gunakan
metode
projects.locations.vodSessions.create
. Contoh berikut menggunakan pelacakan iklan sisi server.
REST
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_NUMBER
: nomor project Google Cloud yang terletak di kolom Project number di halaman Setelan IAMLOCATION
: lokasi tempat untuk membuat sesi Anda; gunakan salah satu wilayah yang didukungTampilkan lokasius-central1
us-east1
us-west1
asia-east1
asia-south1
asia-southeast1
europe-west1
southamerica-east1
VOD_URI
: URI media yang akan digabungkan. URI ini harus merujuk pada file manifes MPEG-DASH (.mpd) atau file manifes playlist M3U (.m3u8). Gunakan URI publik atau URI tanpa tanda tangan yang Anda gunakan untuk mendaftarkan kunci CDN.AD_TAG_URI
: URI publik tag iklan; jika tidak memilikinya, Anda dapat menggunakan contoh VMAP Pre-roll
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/vodSessions/SESSION_ID", "interstitials": { "sessionContent": { "duration": "60s" } }, "playUri": "PLAY_URI", # This is the ad-stitched VOD URI "sourceUri": "VOD_URI", "adTagUri": "AD_TAG_URI", "assetId": "ASSET_ID", "adTracking": "SERVER" }
C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di panduan memulai Video Stitcher API menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Video Stitcher API.
Untuk mengautentikasi ke Video Stitcher API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di panduan memulai Video Stitcher API menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Video Stitcher API.
Untuk mengautentikasi ke Video Stitcher API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di panduan memulai Video Stitcher API menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Video Stitcher API.
Untuk mengautentikasi ke Video Stitcher API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di panduan memulai Video Stitcher API menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Video Stitcher API.
Untuk mengautentikasi ke Video Stitcher API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
PHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di panduan memulai Video Stitcher API menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Video Stitcher API.
Untuk mengautentikasi ke Video Stitcher API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di panduan memulai Video Stitcher API menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Video Stitcher API.
Untuk mengautentikasi ke Video Stitcher API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Ruby
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di panduan memulai Video Stitcher API menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Video Stitcher API.
Untuk mengautentikasi ke Video Stitcher API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Video Stitcher API menghasilkan ID sesi unik untuk setiap permintaan. Sesi berakhir setelah 4 jam.
Iklan harus dienkode sebelum dapat digabungkan menjadi sesi VOD. Saat Anda membuat sesi untuk video yang digabungkan dengan iklan, Video Stitcher API akan menentukan apakah iklan sudah dienkode dari sesi sebelumnya atau belum. Jika ya, respons JSON akan menunjukkan peristiwa jeda iklan. API ini hanya mencari iklan berenkode yang dibuat oleh sesi yang terkait dengan project Google Cloud Anda. Untuk informasi selengkapnya tentang proses ini, lihat Ringkasan.
Lihat respons JSON. Respons ini menunjukkan bahwa iklan tidak digabungkan ke dalam sesi. Jika demikian, tunggu 5 menit (untuk encoding iklan), lalu jalankan kembali perintah create session. Responsnya sekarang akan serupa dengan berikut ini:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/vodSessions/SESSION_ID", "interstitials": { "adBreaks": [ { "progressEvents": [ { "timeOffset": "0s", "events": [ { "type": "IMPRESSION", "uri": "https://securepubads.g.doubleclick.net/pcs/view..." }, { "type": "START", "uri": "https://pubads.g.doubleclick.net/pagead/interaction/..." }, ... ] }, ... ], "ads": [ { "duration": "10s", "activityEvents": [ { "type": "ERROR", "uri": "https://pubads.g.doubleclick.net/pagead/interaction/..." }, { "type": "CLICK_THROUGH", "uri": "https://pubads.g.doubleclick.net/pcs/click...", "id": "GDFP" }, ... ] } ], "endTimeOffset": "10s", "startTimeOffset": "0s" } ], "sessionContent": { "duration": "70s" } }, "playUri": "PLAY_URI", "sourceUri": "VOD_URI", "adTagUri": "AD_TAG_URI", "assetId": "ASSET_ID", "adTracking": "SERVER" }
Responsnya adalah
objek VodSession
yang berisi kolom berikut:
- Kolom
name
yang menunjukkan SESSION_ID VOD. Gunakan ID ini untuk mendapatkan sesi. - Kolom
interstitials
yang berisi metadata tentang iklan yang disisipkan (lihat konsep metadata iklan). - Kolom
playUri
yang menunjukkan URL yang digunakan perangkat klien untuk memutar aset video yang dikondisikan.
Jika Anda membuat sesi atas nama perangkat pelanggan, tetapkan parameter berikut melalui header HTTP:
Parameter | Header HTTP |
---|---|
CLIENT_IP | x-user-ip |
REFERRER_URL | referer |
USER_AGENT | user-agent |
Anda dapat menambahkan header berikut ke permintaan curl
sebelumnya:
-H "x-user-ip: CLIENT_IP" \ -H "referer: REFERRER_URL" \ -H "user-agent: USER_AGENT" \
Makro tag iklan
Tag iklan dapat berisi makro, yang dapat menghasilkan tag iklan yang berbeda untuk setiap sesi. Makro dilambangkan dengan tanda kurung siku dalam tag iklan, seperti yang ditunjukkan oleh contoh berikut:
AD_TAG_URI¯o=[value]
Untuk mengganti nilai di makro tag iklan, berikan pemetaan di
kolom adTagMacroMap
. Misalnya, jika Anda ingin mengganti [value] dengan string bar
, Anda harus menyediakan hal berikut:
{ ... "adTagUri": "AD_TAG_URI¯o=[value]", "adTagMacroMap": { "value": "bar" }, ... }
Saat Video Stitcher API meminta metadata iklan, Video Stitcher API akan menggunakan tag iklan berikut:
AD_TAG_URI¯o=bar
Mendapatkan sesi
Untuk mendapatkan sesi video yang digabungkan dengan iklan, gunakan
metode
projects.locations.vodSessions.get
.
REST
Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:
PROJECT_NUMBER
: nomor project Google Cloud yang terletak di kolom Project number di halaman Setelan IAMLOCATION
: lokasi sesi Anda; gunakan salah satu wilayah yang didukungTampilkan lokasius-central1
us-east1
us-west1
asia-east1
asia-south1
asia-southeast1
europe-west1
southamerica-east1
SESSION_ID
: ID untuk sesi VOD
Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:
Anda akan melihat respons JSON seperti berikut:
{ "name": "projects/PROJECT_NUMBER/locations/LOCATION/vodSessions/SESSION_ID", "interstitials": { "adBreaks": [ { "progressEvents": [ { "timeOffset": "0s", "events": [ { "type": "IMPRESSION", "uri": "https://securepubads.g.doubleclick.net/pcs/view..." }, { "type": "START", "uri": "https://pubads.g.doubleclick.net/pagead/interaction/..." }, ... ] }, ... ], "ads": [ { "duration": "10s", "activityEvents": [ { "type": "ERROR", "uri": "https://pubads.g.doubleclick.net/pagead/interaction/..." }, { "type": "CLICK_THROUGH", "uri": "https://pubads.g.doubleclick.net/pcs/click...", "id": "GDFP" }, ... ] } ], "endTimeOffset": "10s", "startTimeOffset": "0s" } ], "sessionContent": { "duration": "70s" } }, "playUri": "PLAY_URI", "sourceUri": "VOD_URI", "adTagUri": "AD_TAG_URI", "assetId": "ASSET_ID", "adTracking": "SERVER" }
C#
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di panduan memulai Video Stitcher API menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API C# Video Stitcher API.
Untuk mengautentikasi ke Video Stitcher API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Go
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di panduan memulai Video Stitcher API menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Go Video Stitcher API.
Untuk mengautentikasi ke Video Stitcher API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Java
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di panduan memulai Video Stitcher API menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Java Video Stitcher API.
Untuk mengautentikasi ke Video Stitcher API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Node.js
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di panduan memulai Video Stitcher API menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Node.js Video Stitcher API.
Untuk mengautentikasi ke Video Stitcher API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
PHP
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di panduan memulai Video Stitcher API menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API PHP Video Stitcher API.
Untuk mengautentikasi ke Video Stitcher API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Python
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di panduan memulai Video Stitcher API menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Python Video Stitcher API.
Untuk mengautentikasi ke Video Stitcher API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Ruby
Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di panduan memulai Video Stitcher API menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API Ruby Video Stitcher API.
Untuk mengautentikasi ke Video Stitcher API, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.
Contoh playlist yang digabungkan dengan iklan
Berikut adalah contoh playlist VOD sumber sebelum penggabungan iklan:
#EXTM3U
#EXT-X-TARGETDURATION:6
#EXT-X-VERSION:4
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:6.000,
segment_01.ts
#EXTINF:6.000,
segment_02.ts
#EXTINF:6.000,
segment_03.ts
#EXTINF:6.000,
segment_04.ts
#EXTINF:6.000,
segment_05.ts
#EXTINF:6.000,
segment_06.ts
#EXT-X-ENDLIST
Berikut adalah contoh playlist VOD sumber setelah penggabungan iklan dengan iklan pre-roll, mid-roll, dan post-roll:
#EXTM3U
#EXT-X-VERSION:4
#EXT-X-TARGETDURATION:6
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-DISCONTINUITY
#EXTINF:4,
https://ads.us-west1.cdn.videostitcher.goog/preroll_ad/seg_01.ts
#EXTINF:4,
https://ads.us-west1.cdn.videostitcher.goog/preroll_ad/seg_02.ts
#EXTINF:1.99,
https://ads.us-west1.cdn.videostitcher.goog/preroll_ad/seg_03.ts
#EXT-X-DISCONTINUITY
#EXTINF:6,
segment_01.ts
#EXTINF:6,
segment_02.ts
#EXT-X-DISCONTINUITY
#EXTINF:4,
https://ads.us-west1.cdn.videostitcher.goog/midroll_ad/seg_01.ts
#EXTINF:0.99,
https://ads.us-west1.cdn.videostitcher.goog/midroll_ad/seg_02.ts
#EXT-X-DISCONTINUITY
#EXTINF:6.000,
segment_03.ts
#EXTINF:6.000,
segment_04.ts
#EXTINF:6.000,
segment_05.ts
#EXTINF:6.000,
segment_06.ts
#EXT-X-DISCONTINUITY
#EXTINF:4,
https://ads.us-west1.cdn.videostitcher.goog/postroll_ad/seg_01.ts
#EXTINF:4,
https://ads.us-west1.cdn.videostitcher.goog/postroll_ad/seg_02.ts
#EXTINF:1.99,
https://ads.us-west1.cdn.videostitcher.goog/postroll_ad/seg_03.ts
#EXT-X-ENDLIST
Menghindari ketidaksejajaran jeda iklan
Untuk penggabungan VOD, Anda harus melakukan pra-kondisi terhadap manifes video sumber untuk jeda iklan mid-roll dan mengonfigurasi tag iklan Playlist Multi-Iklan Video (VMAP) untuk menampilkan jeda iklan mid-roll pada posisi offset yang telah ditentukan sebelumnya. Video Stitcher API mengambil hasil dari output yang di-transcoding dan menyisipkan iklan sedekat mungkin dengan tempat yang Anda tentukan. Gunakan input yang telah ditentukan sebelumnya untuk jeda iklan midroll agar perilaku penggabungan iklan konsisten dan akurat.
Misalnya, playlist video berikut menampilkan peluang penempatan iklan pada tanda tujuh detik:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:4
#EXTINF:2.0
../video/180_250000/hls/segment_0.ts
#EXTINF:2.0
../video/180_250000/hls/segment_1.ts
#EXTINF:2.0
../video/180_250000/hls/segment_2.ts
#EXTINF:1.0
../video/180_250000/hls/segment_3.ts
#EXT-X-PLACEMENT-OPPORTUNITY
#EXTINF:2.0
../video/180_250000/hls/segment_4.ts
Playlist audio berikut menampilkan peluang penempatan iklan pada tanda tujuh detik:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:4
#EXTINF:1.99
../audio/1_stereo_128000/hls/segment_0.ts
#EXTINF:1.99
../audio/1_stereo_128000/hls/segment_1.ts
#EXTINF:1.99
../audio/1_stereo_128000/hls/segment_2.ts
#EXTINF:1.03
../audio/1_stereo_128000/hls/segment_3.ts
#EXT-X-PLACEMENT-OPPORTUNITY
#EXTINF:1.99
../audio/1_stereo_128000/hls/segment_4.ts
Konfigurasi VMAP berikut menentukan jeda iklan yang akan terjadi pada tanda tujuh detik. Playlist video dan audio akan berisi jeda iklan tepat pada tanda tujuh detik:
<vmap:VMAP xmlns:vmap="http://www.iab.net/videosuite/vmap" version="1.0">
<vmap:AdBreak timeOffset="00:00:07.000" breakType="linear" breakId="midroll‑1">
<vmap:AdSource id="midroll-1‑ad‑1" allowMultipleAds="false" followRedirects="true">
<vmap:AdTagURI templateType="vast3">
<![CDATA[
https://securepubads.g.doubleclick.net/gampad/ads?...
]]>
</vmap:AdTagURI>
</vmap:AdSource>
</vmap:AdBreak>
</vmap:VMAP>
Untuk mendapatkan informasi lebih lanjut tentang format server iklan, lihat Kepatuhan server iklan.