स्नैपबैक

वीडियो पब्लिशर के तौर पर, हो सकता है कि आप चाहें, तो दर्शक वीडियो के बीच में दिखने वाले विज्ञापनों से विज्ञापन न देखें. जब कोई उपयोगकर्ता विज्ञापन के लिए ब्रेक की जगह देखता है, तो उसे विज्ञापन के लिए ब्रेक की शुरुआत में ले जाया जा सकता है. साथ ही, विज्ञापन के लिए ब्रेक की प्रोसेस पूरी होने के बाद, उसे खोजने की जगह पर वापस लाया जा सकता है. इस सुविधा को "स्नैपबैक" कहते हैं.

उदाहरण के तौर पर, नीचे दिया गया डायग्राम देखें. दर्शक कोई वीडियो देख रहा होता है और वह 5-मिनट से लेकर 15-मिनट के निशान तक वीडियो देखना चाहता है. हालांकि, 10 मिनट के अंदर एक विज्ञापन ब्रेक होता है, जिसे आप वीडियो के बाद देखने से पहले देखना चाहते हैं:

विज्ञापन के लिए यह ब्रेक दिखाने के लिए, यह तरीका अपनाएं:

  1. देखें कि क्या उपयोगकर्ता ने कोई ऐसी सीक चलाई है जो देखे गए विज्ञापन के लिए ब्रेक से आगे बढ़ गई है और अगर ऐसा है, तो उसे विज्ञापन के लिए ब्रेक पर वापस ले जाएं.
  2. विज्ञापन के लिए ब्रेक खत्म होने के बाद, वीडियो को उसके मूल वीडियो पर वापस ले जाएं.

डायग्राम के तौर पर, यह कुछ ऐसा दिखेगा:

जैसा कि बेहतर उदाहरण में बताया गया है, HTML5 IMA SDK में इस वर्कफ़्लो को लागू करने का तरीका यहां बताया गया है.

वीडियो में आगे/पीछे जाने की सुविधा को वीडियो के बीच में दिखने वाले विज्ञापन के लिए ब्रेक लेने से रोकें

देखें कि क्या उपयोगकर्ता ने कोई ऐसी खोज की है जो न देखे गए विज्ञापन ब्रेक के बाद भी हुई है. अगर ऐसा है, तो उन्हें विज्ञापन के लिए बने ब्रेक पर वापस ले जाएं. HTML5 SDK टूल में, onSeekEnd() को ट्रिगर करने के लिए, कॉन्टेंट प्लेयर के seeked इवेंट पर इवेंट लिसनर सेट करें. यह तरीका (नीचे बताया गया है), उपयोगकर्ता के वीडियो खोजने के समय से पहले क्यू पॉइंट की जांच करता है. अगर इसे नहीं चलाया जाता है, तो शुरुआती मनचाहे सीक पॉइंट के बजाय उस विज्ञापन ब्रेक के शुरू होने की जगह पर जाएं और snapForwardTime में उस 'सीक पॉइंट' को सेव करें.

function onSeekEnd() {
  if (isLiveStream) { return; }
  if (isSnapback) {
    isSnapback = false;
    return;
  }
  var currentTime = videoElement.currentTime;
  var previousCuePoint =
      streamManager.previousCuePointForStreamTime(currentTime);
  if (previousCuePoint && !previousCuePoint.played) {
    isSnapback = true;
    snapForwardTime = currentTime;
    videoElement.currentTime = previousCuePoint.start;
}

दर्शक को वीडियो के मूल हिस्से पर वापस ले जाएं

अब AD_BREAK_ENDED इवेंट मिलने पर, देखें कि snapForwardTime सेट है या नहीं. अगर ऐसा है, तो उपयोगकर्ता को स्ट्रीम में उस पॉइंट पर ले जाएं, क्योंकि उसने अभी जो विज्ञापन ब्रेक देखा है वह स्नैपबैक का नतीजा था:

function onAdBreakEnded(e) {
  videoElement.controls = true;
  clickElement.style.display = 'none';
  adUiDiv.style.display = 'none';
  if (snapForwardTime && snapForwardTime > videoElement.currentTime) {
    videoElement.currentTime = snapForwardTime;
    snapForwardTime = null;
  }
}