Bu kılavuzda, seç-izle video (VOD) akışları için Dinamik Reklam Ekleme (DAI) kullanılırken IMA DAI SDK'sı ile yer işaretlerinin nasıl uygulanacağı gösterilmektedir. Bu örnekte, Başlarken bölümünde sunulan gibi çalışan bir IMA DAI uygulaması olduğu varsayılmaktadır.
Yer işaretleme 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, bu 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.
Ayrıntılı DAI yer işareti incelemesi
Bir DAI akışını yer işaretlerine eklerken akış kimliğini ve kullanıcının videodan ayrıldığı zamanı kaydetmeniz gerekir. Kullanıcı geri döndüğünde akışı yeniden isteyin ve kayıtlı zamana gidin. İstenen akışın her örneğinde farklı uzunluklarda reklam araları olabileceğinden akış süresini kaydetmek yeterli olmaz. Aslında aynı içerik zamanından devam etmek istersiniz.
Dönüşüm yöntemleri kurtarıcı olabilir
IMA DAI SDK, belirli bir akış zamanı için içerik zamanını ve belirli bir içerik zamanı için akış zamanını istemek üzere iki yöntem sunar. Bu dönüşüm yöntemlerini kullanarak, yer işaretli içerik zamanını saklayabilir ve ardından akışın yeni örneğinde ilgili akış zamanına gidebilirsiniz. Çalışan bir yer işareti uygulama örneğini gösteren bir bağlantı da dahil olmak üzere yaklaşımı burada bulabilirsiniz.
Reklam akışı yer işaretlerini kaydetme ve yükleme
İçerik oynatıcı duraklatıldığında yer işareti kaydetme
onPause() {
var bookmarkTime = Math.floor(
streamManager.contentTimeForStreamTime(videoElement.currentTime));
}
Yer işaretleri yükleniyor
Akış yeniden istendiğinde 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 uygulama örneğini görmek için örnek uygulamayı indirin.