حفظ الإشارات المرجعية لبث الإعلانات وتحميلها

اختيار النظام الأساسي: HTML5 Android iOS tvOS Roku

يوضّح هذا الدليل كيفية تنفيذ ميزة وضع الإشارات المرجعية باستخدام حزمة تطوير البرامج لإدراج الإعلانات الديناميكية من IMA عند استخدام ميزة "إدراج الإعلانات الديناميكية" لبث محتوى الفيديو عند الطلب. يفترض هذا المثال أنّك تستخدم عملية تنفيذ IMA DAI، مثل تلك الموضّحة في مقالة البدء.

ما هي إضافة المواقع الإلكترونية إلى الإشارات المرجعية؟

الإشارة المرجعية هي القدرة على حفظ نقطة معيّنة في بث المحتوى ثم الرجوع إليها. لنفترض أنّ أحد المستخدمين شاهد خمس دقائق من المحتوى، ثم غادر بث الفيديو، ثم عاد إليه. تتيح ميزة وضع الإشارة المرجعية للمستخدم حفظ موضع الفيديو في البث المباشر، ما يتيح له متابعة المشاهدة من حيث توقّف، وبالتالي توفير تجربة سلسة للمشاهد.

الإشارات المرجعية في "إدراج الإعلان الديناميكي"

عند وضع إشارة مرجعية على بث DAI، عليك تسجيل معرّف البث والوقت عندما يغادر المستخدم الفيديو. عندما يعود المستخدم، أعِد طلب البث وانتقِل إلى الوقت المحفوظ. بما أنّ كل مثيل من البث المطلوب يمكن أن يتضمّن فواصل إعلانية بمدد مختلفة، لن يكون حفظ وقت البث كافيًا. ما عليك فعله هو المتابعة من وقت المحتوى نفسه.

طُرق الإحالة الناجحة في الخدمة

توفّر حزمة تطوير البرامج (SDK) الخاصة بـ "إدراج إعلان ديناميكي" من IMA طريقتَين لطلب وقت المحتوى لوقت بث معيّن، ووقت البث لوقت محتوى معيّن. باستخدام طرق التحويل هذه، يمكنك تخزين وقت المحتوى الذي تمت إضافة إشارة مرجعية إليه، ثم البحث عن وقت البث المقابل في مثيل جديد من البث. في ما يلي الطريقة، بما في ذلك رابط إلى نموذج تطبيق يعرض عملية تنفيذ ناجحة للإشارات المرجعية.

حفظ إشارات مرجعية في بث الإعلانات وتحميلها

حفظ إشارة مرجعية عندما يكون مشغّل المحتوى متوقفًا مؤقتًا

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

جارٍ تحميل الإشارات المرجعية

حمِّل الإشارة المرجعية عند إعادة طلب بث.

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);
}

نموذج التطبيق

نزِّل نموذج التطبيق للاطّلاع على مثال على تنفيذ ميزة الإشارات المرجعية.