Reklam akışı yer işaretlerini kaydetme ve yükleme

Bu kılavuzda, seç-izle (VOD) akışları için Dinamik Reklam Ekleme (DAI) kullanılırken IMA DAI SDK'sı kullanılarak yer işareti eklemenin nasıl uygulanacağı gösterilmektedir. Bu örnekte, Başlayın bölümünde sunulan gibi çalışan bir IMA DAI uygulaması olduğu varsayılmaktadır.

Yer işareti nedir?

Yer işareti koyma, içerik akışında belirli bir noktayı kaydetme ve daha sonra bu noktaya dönme olanağıdır. Bir kullanıcının beş dakikalık içerik izlediğini, video akışından ayrıldığını ve daha sonra akışa döndüğünü varsayalım. Yer işareti koyma özelliği, kullanıcının akış içindeki konumunu kaydederek akışın kaldığı yerden devam edebilmesini sağlar ve böylece izleyiciye sorunsuz bir deneyim sunar.

DAI yer işaretleme işleminin ayrıntıları

Bir DAI akışına yer işareti eklerken akış kimliğini ve kullanıcının videodan ayrıldığı zamanı kaydetmeniz gerekir. Kullanıcı geri döndüğünde yayını yeniden isteyin ve kayıtlı zamana gidin. İstenen yayının her örneğinde farklı sürelerde reklam araları olabileceğinden, yalnızca yayın süresini kaydetmek işe yaramaz. Aslında aynı içerik süresinden devam etmek istiyorsunuz.

Kurtuluş için dönüşüm yöntemleri

IMA DAI SDK'sı, belirli bir yayın süresi için içerik süresini ve belirli bir içerik süresi için yayın süresini istemek üzere iki yöntem sağlar. Bu dönüşüm yöntemlerini kullanarak yer işareti eklenmiş içerik zamanını saklayabilir ve ardından yayının yeni örneğinde ilgili yayın süresine gidebilirsiniz. Bu yaklaşımı, çalışan bir yer işareti uygulamasını gösteren örnek uygulamanın bağlantısıyla birlikte aşağıda bulabilirsiniz.

Reklam akışı yer işaretlerini kaydetme ve yükleme

İçerik oynatıcı duraklatıldığında yer işareti kaydedin.

onPause() {
   var bookmarkTime = Math.floor(
   streamManager.contentTimeForStreamTime(videoElement.currentTime));
}

Yer işaretleri yükleniyor

Akış için yeniden istek gönderirken yer işaretini yükleyin.

function loadUrl(url) {
  hls.on(Hls.Events.MANIFEST_PARSED, () => {
    var startTime = 0;
    if (bookmarkTime) {
      var startTime = streamManager.streamTimeForContentTime(bookmarkTime);
      // Seeking on load triggers the onSeekEnd event, so treat this seek as
      // if it's snapback. Without this, resuming at a bookmark kicks you
      // back to the ad before the bookmark.
      isSnapback = true;
    }
    hls.startLoad(startTime);
    videoElement.addEventListener('loadedmetadata', () => { videoElement.play(); });
  });
  hls.loadSource(url);
  hls.attachMedia(videoElement);
}

Örnek uygulama

Yer işareti uygulamasını görmek için örnek uygulamayı indirin.