Bu kılavuzda, reklam aralarının tam zamanlamasını ve süresini (yayın öncesi reklamlar dahil) getirmek için reklam kapsülü zamanlama meta verileri (ATM) yöntemi kullanılarak reklam aralarının nasıl ekleneceği açıklanmaktadır.
Videonun ortasında gösterilen reklam aralarından sonra içeriğe dönüşü yönetmek ve videodan önce gösterilen reklamları eklemek için aşağıdaki API'leri çağırmanızı öneririz:
- Reklam Kapsülü Zamanlama Meta Verileri (ATM) API'si: Reklam ve slate süreleri dahil olmak üzere reklam kapsülü karar sonuçlarını sorgular.
- Reklam segmenti uç noktası: Mevcut reklam kapsülünü sonlandırma seçeneğiyle birlikte reklam veya slate segmentleri isteyin.
İsteğe bağlı olarak, eşzamanlı izleyici sayısının yüksek olduğu canlı yayın etkinliklerinde, reklam arası başlamadan önce reklam kararlarını planlamak için Erken Reklam Arası Bildirimi (EABN) API'sinin çağrılması önerilir.
Ön koşullar
Başlamak için kapsül yayınlama yönlendirme Dinamik Reklam Ekleme (DAI) türü için bir canlı yayın etkinliği ayarlamanız gerekir. Aşağıdaki yöntemlerden birini seçin:
- Ad Manager kullanıcı arayüzü: DAI için canlı yayın ayarlayın.
- Ad Manager API:
LiveStreamEventService.createLiveStreamEvents
yöntemini çağırmak için bir istemci kitaplığı (kullanılabilir seçenekler) kullanın.LiveStreamEvent.dynamicAdInsertionType
parametresiniPOD_SERVING_REDIRECT
olarak ayarlayın.
İçerik akışını alma
Kullanıcı bir canlı yayın etkinliği seçtiğinde istemci uygulaması Google Ad Manager'a bir yayın isteğinde bulunur. Uygulama, yayın yanıtında Google DAI oturum kimliğini ve meta verilerini çıkararak yayın manifesti isteğine ekler.
Aşağıdaki örnekte, bir Google DAI oturum kimliği, manifest değiştiriciye iletilir:
https://MANIFEST_MANIPULATOR_URL/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY
Video içeriği oynatma isteğini işlerken reklam eklemeye hazırlanmak için Google DAI oturum kimliğini ve CUSTOM_ASSET_KEY isteğinden gelen verileri saklayın.
Reklam kapsülü zamanlama meta verilerini alma
Reklam kapsülü zamanlamasını almak için aşağıdaki adımları uygulayın:
- HMAC jetonu oluşturun.
- HMAC jetonuyla ATM API'sini çağırın.
İmzalı bir HMAC jetonu oluşturma
İsteklerinizin kimliğini doğrulamak için aşağıdaki adımları uygulayın:
Aşağıdaki parametreleri alfabetik sırayla birleştirerek ve tilde işaretiyle
~
ayırarak bir jeton dizesi oluşturun:Parametre Zorunlu veya isteğe bağlı Açıklama ad_break_id
Zorunlu Reklam arasını tanımlamak için belirttiğiniz dize (ör. ad-break-1
). Videodan önce gösterilen reklamlar içinpreroll
kullanın.custom_asset_key
Zorunlu Canlı yayın etkinliğinin özel öğe anahtarı. cust_params
İsteğe bağlı Özel hedefleme parametreleri. Daha fazla bilgi için Akışınıza hedefleme parametreleri sağlama başlıklı makaleyi inceleyin. exp
Zorunlu Bu jetonun geçerliliğinin sona erdiği zaman, Unix döneminden bu yana geçen toplam saniye sayısı olarak ölçülür. network_code
Zorunlu Google Ad Manager ağ kodunuz. Daha fazla bilgi için Ad Manager hesap bilgilerini bulma başlıklı makaleyi inceleyin. pd
Zorunlu Reklam arası süresi (milisaniye cinsinden). Videodan önce gösterilen reklamlar için Google DAI, bu parametreyi canlı yayın etkinliği ayarlarınızla geçersiz kılar. scte35
İsteğe bağlı Base64 kodlu SCTE-35 sinyali. Sinyalin doğru olup olmadığını doğrulayın. Yanlışsa yanıttaki X-Ad-Manager-Dai-Warning
HTTP başlığına bir mesaj gönderilir ve reklam arası oluşturmak için sinyal yayılmaya devam eder. Desteklenen reklam arası işaretçileri hakkında daha fazla bilgi için HLS entegrasyonu başlıklı makaleyi inceleyin.HMAC türündeki Google DAI kimlik doğrulama anahtarınızı indirin. Daha fazla ayrıntı için DAI video akışı isteklerinin kimliğini doğrulama başlıklı makaleyi inceleyin.
Jeton dizesinin SHA256 imzasını oluşturmak için indirdiğiniz HMAC anahtarını kullanın.
Jeton dizesini ve oluşturulan imzayı birleştirin.
Birleştirilmiş dizeye URL kodlaması uygulayın. Kodlanmış dize, Ad Pod Zamanlama Meta Verileri (ATM) API isteklerinin kimliğini doğrulamak için kullanılan imzalı HMAC jetonudur.
Aşağıdaki örnek, videodan önce gösterilen reklamlar için imzalı bir HMAC jetonu oluşturur:
custom_asset_key="CUSTOM_ASSET_KEY"
exp="1750700000" # Expired on Mon Jun 23 2025 13:33:20 GMT-0400 (Eastern Daylight Time)
network_code="NETWORK_CODE"
ad_break_id="preroll"
pd="0" # Pod duration value is overridden by the livestream event settings.
# The HMAC authentication key associated with your livestream event in Google Ad Manager.
secret_key="24E96382584C328087546B0E8454F26158564E8466FD2BE3D8A996B38445876C"
# Concatenate the parameters, keep the parameters alphabetically ordered by name.
token_string="ad_break_id=${ad_break_id}~custom_asset_key=${custom_asset_key}~exp=${exp}~network_code=${network_code}~pd=${pd}"
# Calculate the SHA256 signature of the token_string.
hmac_signature=$(echo -n "$token_string" | openssl dgst -sha256 -hmac "$secret_key" | awk '{print $2}')
# Concatenate the token string and the signature.
signed_token="${token_string}~hmac=${hmac_signature}"
url_encode() {
local string="${1}"
local strlen=${#string}
local encoded=""
local pos c
for (( pos=0 ; pos<strlen ; pos++ )); do
c=${string:$pos:1}
case "$c" in
[-_.~a-zA-Z0-9] ) o="${c}" ;;
* ) printf -v o '%%%02x' "'$c"
esac
encoded+="${o}"
done
echo "${encoded}"
}
# Apply URL encoding to the concatenated string.
url_encoded_signed_token=$(url_encode "$signed_token")
echo "Signed HMAC token:"
echo "${url_encoded_signed_token}"
# Example output:
# ad_break_id%3Dpreroll~custom_asset_key%3DiYdOkYZdQ1KFULXSN0Gi7g~exp%3D1489680000~network_code%3D21775744923~pd%3D180000~pod_id%3D5~hmac%3D24E96382584C328087546B0E8454F26158564E8466FD2BE3D8A996B38445876C
Videonun başında gösterilen reklamlar için zamanlama meta verilerini isteyin
Aşağıdaki seçenekleri kullanarak canlı yayın etkinliğinizin yayın öncesi reklam ayarlarını doğrulayın:
Videodan önce gösterilen reklam kararı sonuçlarını almak için ATM API'ye istek gönderin.
Aşağıdaki örnekte, videodan önce gösterilen reklamlar için bir ATM isteği oluşturuluyor:
curl "https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/pod.json?stream_id=SESSION_ID&ad_break_id=preroll&auth-token=your_signed_HMAC_token"
Videonun ortasında gösterilen reklamlar için zamanlama meta verilerini isteme
Orta rulo reklamlar için reklam kapsülü meta verilerini almak üzere aşağıdaki adımları uygulayın:
- Her bir videonun ortasında gösterilen reklam arası için zamanlamayı ve süreyi içeren reklam işaretçilerini bulmak üzere canlı yayın manifestini ayrıştırın.
- Tam reklam grubu ve slate süresini istemek için ATM API uç noktasını çağırın. API, reklam kapsülünün karar sonuçlarını içeren bir JSON nesnesi döndürür.
Aşağıdaki örnekte, videonun ortasında gösterilen reklamlar için bir ATM isteği oluşturuluyor:
curl "https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/pod.json?stream_id=SESSION_ID&ad_break_id=AD_BREAK_ID&pd=AD_BREAK_DURATION&auth-token=your_signed_HMAC_token"
İşlem başarılı olursa aşağıdaki JSON nesnesine benzer bir çıkış görürsünüz:
{
"status": "final",
"ads": [
{
"duration_ms": 5046,
"variants": {
"devrel1428000": {
"segment_extension": "ts",
"segment_durations": {
"timescale": 1000,
"values": [
5045
]
}
},
"devrel1928000": {
"segment_extension": "ts",
"segment_durations": {
"timescale": 1000,
"values": [
5045
]
}
}
}
}
],
"slate": {
"duration_ms": 0,
"variants": {
"devrel1428000": {
"segment_extension": "ts",
"segment_durations": {
"timescale": 1000,
"values": [
5005,
...
5046
]
}
},
"devrel1928000": {
"segment_extension": "ts",
"segment_durations": {
"timescale": 1000,
"values": [
5005,
...
5046
]
}
}
}
}
}
Reklamları içerik manifestine yerleştirme
Aşağıdaki bölümlerde, canlı yayın manifestini nasıl değiştireceğiniz ve reklam segmentlerini nasıl ekleyeceğiniz açıklanmaktadır.
Reklam arası segmentlerini belirleme ve süreksizlikler ekleme
Her varyant manifestini işlerken akışınızdaki EXT-X-CUE-IN
ve EXT-X-CUE-OUT
etiketlerini belirleyin. Bu etiketler, reklam arası başlangıcını ve bitişini gösterir.
İstemci video oynatıcının içerik ve reklamlar arasında geçiş yapabilmesi için EXT-X-CUE-IN
ve EXT-X-CUE-OUT
etiketlerini EXT-X-DISCONTINUITY
öğeleriyle değiştirin.
Aşağıdaki örnek manifest, EXT-X-CUE-IN
ve EXT-X-CUE-OUT
etiketlerinin yerine geçer:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-CUE-OUT:15.000
#EXTINF:5.000,
contentorigin.com/3.ts
#EXTINF:5.000,
contentorigin.com/4.ts
#EXTINF:5.000,
contentorigin.com/5.ts
#EXT-X-CUE-IN
#EXTINF:5.000,
contentorigin.com/6.ts
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4
Aşağıdaki örnekte değiştirilmiş bir manifest gösterilmektedir:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXTINF:5.000,
#EXT-X-DISCONTINUITY
{... Insert ad segments here ...}
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/6.mp4
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4
Google DAI reklam segmentleri şifrelenmez. İçeriğiniz şifrelenmişse her reklam arasının ilk reklam segmentinden önce EXT-X-KEY:METHOD=NONE
öğesini ekleyerek şifrelemeyi kaldırın. Reklam arasının sonunda, uygun bir EXT-X-KEY
ekleyerek şifrelemeyi geri ekleyin.
Yaklaşan reklam arasının başlangıç zamanını, süresini ve dizinini takip edin.
Reklam segmenti URL'leri oluşturma
EXT-X-DISCONTINUITY
etiketleri arasındaki içerik segmentlerini her reklam segmentinin URL'leriyle değiştirin. Kaç reklam segmenti ekleneceğini belirlemek için ATM API'den gelen JSON yanıtında sağlanan ads.segment_durations.values
değerini kullanın.
Bir EXT-X-CUE-IN
etiketi algılandığında reklam kapsülünü erken sonlandırmak için nihai reklam segmentinin URL'sine d=
parametresini ekleyin. Bu parametre, istemci video oynatıcısının zaman çizelgesini etkilememek için segmenti kısaltır.
Aşağıdaki örnekte, manifeste videodan önce gösterilen reklam segmenti URL'si eklenmektedir. Reklam segmentlerinin sıfır tabanlı bir dizin kullandığını unutmayın:
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/preroll/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
Aşağıdaki örnekte, manifeste bir videonun ortasında gösterilen reklam segmenti URL'si eklenmektedir:
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
Aşağıdaki örnekte, manifest dosyasına reklam segmentleri eklenmektedir:
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:5.00,
contentorigin.com/1.ts
#EXTINF:5.00,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID
#EXTINF:5.00,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/2.ts?stream_id=SESSION_ID
#EXT-X-DISCONTINUITY
#EXTINF:5.00,
contentorigin.com/6.mp4
#EXTINF:5.00,
contentorigin.com/7.mp4
#EXTINF:5.00,
contentorigin.com/8.mp4
Seçenek listesi segmentleri oluşturma
Reklam ile içerik arasındaki boşluğu doldurmak için seçenek listesi segmentleri ekleyin.
Her bir slate segmentinin süresini belirlemek için ATM API'sinin JSON yanıtındaki slates.segment_durations.values
dizisini kullanın. Reklam arasının tamamını doldurmak için segment süreleri dizisini gerektiği gibi tekrarlayın.
Aşağıdaki örnekte, bir slate segmenti oluşturulmaktadır:
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
Örnekteki slate/0
, slate yineleme numarasını temsil eder. 0
ile başlayıp bu sayıyı her bir slate döngüsü için artırmanız mı yoksa tüm yinelemeler için 0
olarak tutmanız mı gerektiğini belirlemek için istemci video oynatıcınızın uyumluluğuna ve önbelleğe alma özelliğine bakın.
İçeriğe dönüşü yönetme
Reklam kapsülündeki tüm segmentleri ekledikten sonra içerik akışınıza geri dönmek için aşağıdaki yöntemlerden birini seçin:
Yöntem | Açıklama | İstemci video oynatıcısındaki etkiler |
---|---|---|
Seçenek listesi segmentleriyle doldurma | Slate segmentlerini ekler ve slate'i döngüye alır. Süreyi doldurur ve her bir slate yinelemesi arasına EXT-X-DISCONTINUITY öğeleri ekler. |
Efekt yok. Video oynatıcı, zaman çizelgesi değiştirilmeden içeriğe geri döner. |
Tek bir slate segmentiyle yeniden hizalama | Tek bir slate segmenti ekler. İçerik başlangıcına kadar olan süreyi doldurmak için d= parametresini kullanır. |
Efekt yok. Video oynatıcı, zaman çizelgesi değiştirilmeden içeriğe geri döner. |
Anında İade | İçerik segmentleri ekleme | Video oynatıcının zaman çizelgesi değiştirilir. İstemci video oynatıcınız, değiştirilen zaman çizelgesini işlemelidir. |
İsteğe bağlı: Reklam arası planlama
Doldurma oranınızı artırmak için reklam grubu süresi, özel hedefleme parametreleri ve SCTE-35 sinyal verileriyle birlikte Erken Reklam Arası Bildirimi (EABN) gönderin. Daha fazla bilgi için Erken reklam arası bildirimi gönderme başlıklı makaleye bakın.