يوضّح هذا الدليل كيفية تنفيذ ميزة وضع الإشارات المرجعية باستخدام حزمة تطوير البرامج لميزة "إدراج إعلان ديناميكي" في إعلانات الوسائط التفاعلية (IMA DAI SDK) عند استخدام ميزة "إدراج إعلان ديناميكي" لبث الفيديوهات عند الطلب. يفترض ذلك تنفيذ IMA DAI، مثل التنفيذ الذي تم تقديمه في البدء.
ما المقصود بالإشارة المرجعية؟
الإشارات المرجعية هي إمكانية حفظ نقطة معيّنة في مجرى المحتوى ثم الرجوع إليها. لنفترض أنّ أحد المستخدِمين شاهد خمس دقائق من المحتوى، ثم هجر بث الفيديو، ثم عاد إليه. تؤدي ميزة وضع إشارة على البث إلى حفظ موضع المُستخدِم في البث حتى تتمكّن من المتابعة من حيث توقف، ما يمنح المشاهد تجربة سلسة.
ميزة وضع الإشارات المرجعية في "الإعلانات الديناميكية أثناء عرض الفيديو"
عند وضع إشارة مرجعية على مصدر إعلان ديناميكي أثناء التشغيل، يجب تسجيل معرّف المصدر والوقت عندما يغادر المستخدم الفيديو. عندما يعود المستخدم، يمكنه إعادة طلب البث والرجوع إلى الوقت المحفوظ. وبما أنّ كل مثيل من البث المُطلوب يمكن أن يتضمّن فواصل إعلانية مدّتها مختلفة، لن يكون بإمكانك حفظ وقت البث ببساطة. ما تريد فعله حقًا هو المتابعة من وقت عرض المحتوى نفسه.
طرق احتساب الإحالات الناجحة لإنقاذ الموقف
توفّر حزمة تطوير البرامج (SDK) لميزة "إدراج إعلان ديناميكي" في IMA طريقتَين لطلب وقت عرض المحتوى لوقت بث معيّن ووقت البث لوقت عرض المحتوى معيّن. باستخدام طرق الإحالة الناجحة هذه، يمكنك تخزين bookmarked وقت المحتوى ثم الانتقال إلى وقت البث المقابل في نسخة البث الجديدة. في ما يلي المنهج المُتبع، بما في ذلك رابط يؤدي إلى ملف نموذجي للتطبيق يعرض عملية تنفيذ ناجحة للإشارات المرجعية.
حفظ الإشارات المرجعية لبث الإعلانات وتحميلها
حفظ إشارة مرجعية عند إيقاف تشغيل مشغّل المحتوى مؤقتًا
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);
}
نموذج تطبيق
نزِّل تطبيق Sample للاطّلاع على مثال لتنفيذ الإشارات المرجعية.