विज्ञापन के लिए ब्रेक

खास जानकारी

वेब पाने वाले के SDK टूल में, विज्ञापन के लिए ब्रेक और साथ-साथ चलने वाले विज्ञापनों के लिए नेटिव सहायता की सुविधा है का इस्तेमाल किया जा सकता है. यह एपीआई की मदद से विज्ञापन का क्रम, विज्ञापन सोर्स, साथ ही, विज्ञापन के लिए ब्रेक की क्लिप और उनके काम करने का तरीका भी बताया गया है. इस गाइड में, Break उस वीडियो के चलने के इंटरवल के बारे में बताता है जिसमें एक या उससे ज़्यादा विज्ञापन या बंपर शामिल हैं और हर विज्ञापन या बंपर को BreakClip. ये ब्रेक, लोड किए जा रहे या चल रहे मीडिया से जुड़े होते हैं.

विज्ञापन के टाइप

वेब रिसीवर SDK टूल, क्लाइंट साइड विज्ञापन इंसर्शन (सीएसएआई) और सर्वर के साथ काम करता है स्टिच किया गया विज्ञापन इंसर्शन (एसएसएआई). क्लाइंट-स्टिच के ज़रिए दिखाए जाने वाले विज्ञापनों को, मैन्युअल तरीके से ऐप्लिकेशन या VAST और VMAP टेम्प्लेट फ़ाइलों से एक्सट्रैक्ट किया गया होता है. कॉन्टेंट लोड करने से पहले, सर्वर से सिले गए विज्ञापनों की जानकारी मैन्युअल तरीके से दी जानी चाहिए: एम्बेड किए गए विज्ञापन या वीडियो चलने के दौरान डाइनैमिक तौर पर, एम्बेड किए गए वीडियो के तौर पर दिखते हैं विज्ञापन. इनमें से हर विज्ञापन टाइप को लागू करने के बारे में नीचे विस्तार से बताया गया है.

मैन्युअल क्लाइंट-स्टिच

मैन्युअल तौर पर क्लाइंट-स्टिच किया गया विज्ञापन के लिए ब्रेक, विज्ञापन के लिए ब्रेक का एक ऐसा टाइप होता है जिसे स्टिच किया जाता है क्लाइंट एक साथ जुड़ता है और ऐप्लिकेशन, इसका इस्तेमाल करके मैन्युअल तौर पर तय करता है SDK टूल के एपीआई. विज्ञापन का यह टाइप, मुख्य कॉन्टेंट की स्ट्रीम में एम्बेड नहीं किया गया है. कॉन्टेंट बनाने BreakClip को यह जानकारी देनी होगी contentId जो विज्ञापन के कॉन्टेंट पर ले जाने वाला यूआरएल है. contentType विज्ञापन कॉन्टेंट के फ़ॉर्मैट और title.

Break में isEmbedded और expanded डिफ़ॉल्ट मान false पर सेट किया गया है. कॉन्टेंट बनाने position इन्हें वीडियो शुरू होने से पहले विज्ञापन, वीडियो के बीच में दिखने वाले विज्ञापन या वीडियो खत्म होने के बाद विज्ञापन के लिए ब्रेक पर सेट किया जा सकता है. ज़्यादा जानकारी के लिए, ब्रेकिंग पोज़िशन सेक्शन पर जाएं). आपकी जानकारी के लिए, प्लेबैक के लिए विज्ञापन, वेब रिसीवर SDK लोड करने के लिए एक अन्य प्लेयर इंस्टेंस जनरेट करता है और विज्ञापन का कॉन्टेंट चलाएं. इन ब्रेक के लिए stitched timeline की ज़रूरत होती है. ये ब्रेक ऐसे होने चाहिए स्टैटिक तरीके से जोड़ा गया (यहां ज़्यादा देखें विज्ञापन इंसर्शन सेक्शन में बताया गया है). नीचे दिया गया सैंपल, वेबसाइट या ऐप्लिकेशन पर मैन्युअल क्लाइंट-स्टिच किए गए विज्ञापन को लागू करना:

// Create the BreakClip.
let clipClient = new cast.framework.messages.BreakClip('bc_client');
clipClient.title = 'The Ad Title to be displayed during playback';
clipClient.contentId = 'https://example.com/ad.m3u8';
clipClient.contentType = 'application/vnd.apple.mpegurl';

// Optional: Used when HLS ad container formats differ from the main content's.
clipClient.hlsSegmentFormat = cast.framework.messages.HlsSegmentFormat.FMP4;

// Create the Break using the BreakClip id above.
let breakPostrollClient = new cast.framework.messages.Break(
    'break_postroll_client', ['bc_client'], -1);
breakPostrollClient.isEmbedded = false; // Optional: default is false.
breakPostrollClient.expanded = false; // Optional: default is false.

VAST

वेब रिसीवर SDK टूल, IAB स्टैंडर्ड VAST (वीडियो विज्ञापन दिखाना) को जोड़ने की सुविधा देता है टेंप्लेट) विज्ञापन. दिए जाने पर, एक्सएमएल टेंप्लेट को पार्स किया जाता है, ताकि ब्रेक लेने के बाद, क्लाइंट-स्टिच की गई ब्रेक की क्लिप.

वीएएसटी विज्ञापन बनाने के लिए, पाने वाले ऐप्लिकेशन को एक VastAdsRequest और इसे BreakClip में साफ़ तौर पर बताएं vastAdsRequest प्रॉपर्टी. VastAdsRequest ऑब्जेक्ट में, adsResponse (a एक्सएमएल टेंप्लेट का स्ट्रिंग दिखाना) या adTagUrl (यूआरएल) जहां एक्सएमएल टेंप्लेट होस्ट किया गया है) प्रॉपर्टी सेट अप की गई हो. अगर यूआरएल तय किया गया है, तो SDK टूल, टेंप्लेट फ़ेच करेगा. इनकैप्सुलेटिंग Break इसके बाद चलता है क्लाइंट के स्टिच किए गए विज्ञापनों के तरीके. ये विज्ञापन दूसरे विज्ञापनों के साथ जोड़े जा सकते हैं मैन्युअल क्लाइंट-स्टिच किए गए विज्ञापनों को एक ही ब्रेक में या अलग-अलग ब्रेक में कॉन्टेंट का एक हिस्सा है. नीचे दिए गए उदाहरण में वीएएसटी (वीडियो विज्ञापन देने के लिए टेंप्लेट) को बुनियादी तौर पर लागू करने के बारे में बताया गया है विज्ञापन:

// Create the VastAdsRequest.
let vastTemplate = new cast.framework.messages.VastAdsRequest();
vastTemplate.adTagUrl = 'https://example.com/ads.xml'

// Create the BreakClip.
let clipVast = new cast.framework.messages.BreakClip('bc_vast');
clipVast.vastAdsRequest = vastTemplate;

// Create the Break using the BreakClip id above.
let breakPostrollVast = new cast.framework.messages.Break(
    'break_postroll_vast', ['bc_vast'], -1);
breakPostrollVast.isEmbedded = false; // Optional: default is false.
breakPostrollVast.expanded = false; // Optional: default is false.

जब VAST BreakClip वाला Break डाला जाता है, तो वेब पाने वाला SDK टूल वैकल्पिक रूप से फ़ेच करेगा और फिर टेंप्लेट को पार्स करेगा. पार्स करते समय, SDK टूल एक नया BreakClip जनरेट करेगा और उसे यहां से निकाली गई वैल्यू के साथ भरेगा टेंप्लेट जैसे कि contentId, contentType, title, duration, whenSkippable और clickThroughUrl. ब्रेक की जनरेट की गई क्लिप के लिए id GENERATED:N पर सेट किया जाता है, जहां N एक पूर्णांक होता है, जो हर नए के लिए 1 तक बढ़ता है VAST ब्रेक की क्लिप, 0 को बनाई गई. इसके बाद, जनरेट किया गया विज्ञापन इसमें जोड़ दिया जाता है BreakClip कलेक्शन. मौजूदा Break में हर VAST ब्रेक की क्लिप का id है इसके बाद, जनरेट की गई ब्रेक क्लिप के id से बदल दिया जाएगा. स्निपेट नीचे दिए गए स्निपेट में, MEDIA_STATUS ऐसे ब्रेक लेने से पहले और बाद में दिखाए जाने वाले विज्ञापनों से जुड़े मैसेज.

वीएएसटी विज्ञापनों के साथ ब्रेक लेने से पहले की Break और BreakClip जानकारी.

"breaks": [
  {
    "id": "break_postroll_vast",
    "breakClipIds": [
      "bc_vast"
    ],
    "position": 0,
    "isWatched": false
  }
],
"breakClips": [
  {
    "id": "bc_vast"
  }
]

वीएएसटी विज्ञापनों की मदद से ब्रेक लेने के बाद मिली Break और BreakClip की जानकारी.

"breaks": [
  {
    "id": "break_postroll_vast",
    "breakClipIds": [
      "GENERATED:0"
    ],
    "position": 0,
    "isWatched": true
  }
],
"breakClips": [
  {
    "id": "bc_vast"
  },
  {
    "id": "GENERATED:0",
    "contentId": "https://example.com/break-clip-1.mpd",
    "contentType": "application/dash+xml",
    "title": "Ad Title Extracted from Template",
    "duration": 10,
    "whenSkippable": 5,
    "clickThroughUrl": "https://example.com/ad-target"
  }
]

वीएमएपी

वेब रिसीवर SDK टूल, IAB VMAP (एक से ज़्यादा वीडियो विज्ञापन की प्लेलिस्ट) के साथ काम करता है मानक. VMAP दिया जाने पर, वेब पाने वाला SDK टूल, VMAP को पार्स करेगा रिस्पॉन्स और किसी भी <AdBreak> के लिए क्लाइंट-स्टिच Break ऑब्जेक्ट जनरेट करें एंट्री होती हैं. यह इसके साथ सही BreakClips भी जनरेट करेगा VMAP में दी गई हर <AdSource> एंट्री के लिए, एक vastAdsRequest ऑब्जेक्ट है. यहां की यात्रा पर हूं आपके कॉन्टेंट में विज्ञापन डालने के लिए VMAP चालू करना चाहिए, तो ऐप्लिकेशन को VastAdsRequest ऑब्जेक्ट को असाइन करके उसे vmapAdsRequest प्रॉपर्टी MediaInformation में LoadRequestData. इन विज्ञापनों को स्टैटिक तरीके से डाला जाना चाहिए (यहां ज़्यादा देखें विज्ञापन इंसर्शन सेक्शन में बताया गया है). नीचे एक स्निपेट दिया गया है, जिसमें VMAP अनुरोध का निर्माण.

// Create the VastAdsRequest.
let vastTemplate = new cast.framework.messages.VastAdsRequest();
vastTemplate.adTagUrl = 'https://example.com/vmap.xml'

// Add it to the MediaInformation of the LoadRequest.
loadRequestData.media.vmapAdsRequest = vastTemplate;

एम्बेड किया गया

एम्बेड किया गया विज्ञापन के लिए ब्रेक, विज्ञापन के लिए ब्रेक का एक ऐसा टाइप होता है जो सर्वर साइड से जुड़ा होता है स्ट्रीम में शामिल कर सकते हैं. Break की अवधि को घटाया गया है मीडिया समय का हिसाब लगाते समय, मुख्य कॉन्टेंट की अवधि से निकालें.

BreakClip को यह जानकारी देनी होगी duration के साथ-साथ title. Break में isEmbedded इसे true और पर सेट किया गया expanded false पर सेट किया गया है. कॉन्टेंट बनाने position इसे वीडियो शुरू होने से पहले विज्ञापन या वीडियो के बीच में दिखने वाले विज्ञापन के तौर पर सेट किया जा सकता है. वीडियो खत्म होने के बाद विज्ञापन के लिए ब्रेक सकारात्मक सटीक position मानों के साथ समर्थित है. इस बारे में ज़्यादा जानने के लिए, यहां जाएं: ब्रेक पोज़िशनिंग सेक्शन पर जाएं. जब विज्ञापन चलाएं, तो वेब रिसीवर SDK टूल, विज्ञापन सेगमेंट के तौर पर स्ट्रीम को चलाना जारी रखता है उसमें एम्बेड किए गए वीडियो होते हैं. इस तरह के विज्ञापन के लिए, लोड करने का कोई अतिरिक्त तरीका नहीं है. प्लेहेड के दायरे में आने पर, उपयोगकर्ता को विज्ञापन से जुड़ा काम का मेटाडेटा दिखाया जाता है ब्रेक की समयसीमा. इन ब्रेक के लिए embedded timeline की ज़रूरत होती है और इन्हें जोड़ना ज़रूरी है स्टैटिक तरीके से (विज्ञापन इंसर्शन सेक्शन में ज़्यादा देखें). कॉन्टेंट बनाने नीचे दिया गया नमूना embedded विज्ञापन को बुनियादी तौर पर लागू करने का तरीका दिखाता है.

// Create the BreakClip.
let clipEmbedded = new cast.framework.messages.BreakClip('bc_embedded');
clipEmbedded.title = 'The Ad Title to be displayed during playback';
clipEmbedded.duration = 15;

// Create the Break using the BreakClip id above.
let breakPrerollEmbedded = new cast.framework.messages.Break(
    'break_preroll_embedded', ['bc_embedded'], 0);
breakPrerollEmbedded.isEmbedded = true;
breakPrerollEmbedded.expanded = false; // Optional: default is false.

एम्बेड किया गया बड़ा किया गया

एम्बेड किया गया बड़ा विज्ञापन ब्रेक एक तरह का विज्ञापन ब्रेक होता है, जो सर्वर से जुड़ा होता है स्ट्रीम में लोगों की दिलचस्पी बढ़ाई जा सकती है. Break की अवधि को शामिल किया गया है मीडिया समय का हिसाब लगाते समय, मुख्य कॉन्टेंट की अवधि में दिखाया जाएगा.

BreakClip को यह जानकारी देनी होगी duration के साथ-साथ title. Break में isEmbedded इसे true और पर सेट किया गया expanded true पर सेट किया गया. कॉन्टेंट बनाने position इसे वीडियो शुरू होने से पहले विज्ञापन या वीडियो के बीच में दिखने वाले विज्ञापन के तौर पर सेट किया जा सकता है. वीडियो खत्म होने के बाद विज्ञापन के लिए ब्रेक पॉज़िटिव position वैल्यू के साथ काम करता है. इस बारे में ज़्यादा जानने के लिए, यहां जाएं: ब्रेक पोज़िशनिंग सेक्शन पर जाएं. जब विज्ञापन चलाएं, तो वेब रिसीवर SDK टूल, विज्ञापन सेगमेंट के तौर पर स्ट्रीम को चलाना जारी रखता है उसमें एम्बेड किए गए वीडियो होते हैं. इस तरह के विज्ञापन के लिए, लोड करने का कोई अतिरिक्त तरीका नहीं है. प्लेहेड के दायरे में आने पर, उपयोगकर्ता को विज्ञापन से जुड़ा काम का मेटाडेटा दिखाया जाता है ब्रेक की समयसीमा. इन ब्रेक के लिए embedded timeline की ज़रूरत होती है और इन्हें जोड़ा जा सकता है या तो स्टैटिक तरीके से या डाइनैमिक रूप से (ज़्यादा जानकारी के लिए यहां देखें विज्ञापन इंसर्शन सेक्शन में बताया गया है). नीचे दिया गया सैंपल, वेबसाइट या ऐप्लिकेशन पर embedded expanded विज्ञापन को लागू करना:

// Create the BreakClip.
let clipEmbeddedExpanded =
    new cast.framework.messages.BreakClip('bc_embedded_expanded');
clipEmbeddedExpanded.title = 'The Ad Title to be displayed during playback';
clipEmbeddedExpanded.duration = 15;

// Create the Break using the BreakClip id above.
let breakPrerollEmbeddedExpanded = new cast.framework.messages.Break(
    'break_preroll_embedded_expanded', ['bc_embedded_expanded'], 0);
breakPrerollEmbeddedExpanded.isEmbedded = true;
breakPrerollEmbeddedExpanded.expanded = true;

प्लेयर की टाइमलाइन के टाइप

प्लेयर इंस्टेंस बनाते समय, वेब रिसीवर SDK टूल यह तय करता है कि कॉन्टेंट को चलाने के दौरान विज्ञापन दिखाने में मदद मिलती है. प्रत्येक टाइमलाइन कुछ विज्ञापन को सक्षम करती है ब्रेक टाइप जोड़े जा सकते हैं. टाइमलाइन का टाइप, विज्ञापन के टाइप, लोड होने में लगने वाले समय के दौरान MediaInformation का तरीका LoadRequestData. अगर एम्बेड किए गए विज्ञापन के लिए ब्रेक मौजूद हैं, तो embedded टाइमलाइन चुनी जाती है. अगर आपने क्लाइंट के जोड़े विज्ञापन के लिए ब्रेक मौजूद हैं, stitched टाइमलाइन चुनी गई है. अगर कोई विज्ञापन मौजूद नहीं है, तो SDK टूल डिफ़ॉल्ट रूप से embedded का इस्तेमाल करता है समयावधि. समयावधि चुनने के बाद, इसे वर्तमान मीडिया आइटम. नीचे दी गई टेबल में, हर समयावधि के बारे में पूरी जानकारी दी गई है.

टाइमलाइन का टाइप ब्यौरा
एम्बेड की गई टाइमलाइन मीडिया टाइम का इलस्ट्रेशन, जो विज्ञापन दिखाने में मदद करता है जो मुख्य कॉन्टेंट में एम्बेड होते हैं (एम्बेड किए गए और एम्बेड किए गए बड़े किए गए विज्ञापन के लिए ब्रेक) की सुविधा होती है. जब विज्ञापन के लिए किसी ब्रेक को बड़ा नहीं किया जाता, तो उसकी अवधि इसका प्रतिशत को कुल अवधि से घटाया जाता है कॉन्टेंट. दूसरी ओर, जब कोई बड़ा किया गया विज्ञापन ब्रेक मौजूद है, इसका समय इस अवधि मुख्य कॉन्टेंट का हिस्सा होता है.
स्टिच की गई टाइमलाइन मीडिया टाइम का इलस्ट्रेशन, जो विज्ञापन दिखाने में मदद करता है जिन्हें बाहरी मीडिया फ़ाइलों से लिया गया है (मैन्युअल क्लाइंट-स्टिच, VAST और VMAP विज्ञापन के लिए ब्रेक लें). जोड़े जाने पर, विज्ञापन के लिए ब्रेक की अवधि है मुख्य कॉन्टेंट की अवधि का हिस्सा नहीं होता है.

नीचे दी गई पहली से तीन इमेज में, कुछ ऐसे कॉन्टेंट के बारे में बताया गया है जिसमें विज्ञापन के अलग-अलग टाइप और उनके संबंधित टाइमलाइन मान. कॉन्टेंट को प्री-रोल ब्रेक के साथ कॉन्फ़िगर किया गया हो जिसमें दो ब्रेक क्लिप और मिड-रोल और पोस्ट-रोल ब्रेक शामिल हैं एक ब्रेक की क्लिप. वीडियो चलना शुरू होने के बाद से दीवार घड़ी का समय, मुख्य कॉन्टेंट का मीडिया समय और मौजूदा ब्रेक का समय वीडियो ब्रेक की क्लिप, हर इमेज के नीचे मौजूद है.

क्लाइंट-स्टिच किए गए विज्ञापनों की टाइमलाइन
पहली इमेज: कुछ कॉन्टेंट और क्लाइंट के जोड़े गए विज्ञापन के लिए तीन ब्रेक को दिखाने वाली टाइमलाइन.


सर्वर से जोड़े गए एम्बेड किए गए विज्ञापनों की टाइमलाइन
दूसरी इमेज: किसी कॉन्टेंट की टाइमलाइन और सर्वर से जोड़े गए तीन विज्ञापन विज्ञापन ब्रेक को दिखाया गया है.


सर्वर से एम्बेड किए गए, बड़े किए गए विज्ञापनों की टाइमलाइन
तीसरी इमेज: कुछ कॉन्टेंट की समयावधि और सर्वर के जोड़े गए तीन बड़े विज्ञापन विज्ञापन के लिए ब्रेक.

ब्रेक पोज़िशनिंग

वेब रिसीवर SDK टूल की मदद से, डेवलपर यह तय कर सकते हैं कि विज्ञापन के लिए ब्रेक की जगह कहां होनी चाहिए को सेट करके position Break की प्रॉपर्टी है. यह वैल्यू, मुख्य कॉन्टेंट के मीडिया समय के बारे में बताती है इनका इस्तेमाल करके, pre-roll, mid-roll, और post-roll विज्ञापन के लिए ब्रेक बनाए जा सकते हैं. इनकी परिभाषा इस तरह है:

ब्रेक पोज़िशन ब्यौरा
वीडियो शुरू होने से पहले विज्ञापन विज्ञापन के लिए एक ब्रेक, जो मुख्य कॉन्टेंट से पहले दिखाया जाता है. यह है breakPosition को 0 पर सेट करके दिखाया जाता है
वीडियो के बीच में दिखने वाले विज्ञापन विज्ञापन के लिए ब्रेक, जिसे कॉन्टेंट के बीच में चलाया जाता है. इसे इससे दिखाया जाता है breakPosition को वह समय सेट करते हुए जिसमें ब्रेक का समय है शुरुआती हिस्सा मुख्य कॉन्टेंट की शुरुआत के बाद का है और ब्रेक के खत्म होने का समय, मुख्य कॉन्टेंट के खत्म होने के समय से कम होता है समय.
वीडियो खत्म होने के बाद विज्ञापन विज्ञापन के लिए एक ब्रेक, जो मुख्य कॉन्टेंट के बाद दिखाया जाता है. यह है के लिए breakPosition को -1 पर सेट करके दिखाया जाता है स्टिच की गई टाइमलाइन. एम्बेड किए गए यूआरएल के लिए टाइमलाइन से breakPosition इसे मुख्य कॉन्टेंट के कुल समय के हिसाब से सेट किया जाना चाहिए ब्रेक की अवधि. यह सुविधा लाइव कॉन्टेंट के लिए उपलब्ध नहीं है.

इंटरोऑपरेबिलिटी मैट्रिक्स

तुरंत रेफ़रंस के तौर पर, टेबल 1 विज्ञापन के टाइप की खास जानकारी दिखाती है और विज्ञापन से जुड़ी सुविधाओं के साथ कैसे काम करता है.

टेबल 1: विज्ञापन इंटरऑपरेबिलिटी मैट्रिक्स
सुविधा के लिए सहायता मैन्युअल तौर पर बनाया गया क्लाइंट-स्टिला विज्ञापन VAST वीएमएपी एम्बेड किया गया विज्ञापन एम्बेड किया गया बड़ा किया गया विज्ञापन
इनके साथ काम करता है VAST मैन्युअल क्लाइंट-स्टिच लागू नहीं एम्बेड किया गया बड़ा किया गया एम्बेड किया गया
समयावधि स्टिच किया गया स्टिच किया गया स्टिच किया गया एम्बेड किया गया एम्बेड किया गया
विज्ञापन इंसर्शन स्टैटिक स्टैटिक स्टैटिक स्टैटिक स्टैटिक, डाइनैमिक
विज्ञापन हटाना
वीडियो शुरू होने से पहले दिखने वाला विज्ञापन
वीडियो के बीच में दिखने वाला विज्ञापन
वीडियो खत्म होने के बाद दिखने वाला विज्ञापन
विज्ञापन स्किप करना
ब्रेक सीक इंटरसेप्टर
क्लिप लोड इंटरसेप्टर को बंद करें

इवेंट

'की ब्रेक इवेंट' होने पर, Cast SDK टूल अलग-अलग टाइप के इवेंट की जानकारी भेजेगा BreaksEvent. पैसे पाने वाला ऐप्लिकेशन, PlayerManager का इस्तेमाल करके अपने चैनल की सदस्यता ले सकता है addEventListener एपीआई.

इन इवेंट का इस्तेमाल, आंकड़ों और विज्ञापन प्लेबैक को ट्रैक करने के लिए किया जा सकता है. जब VMAP (वीडियो एक से ज़्यादा विज्ञापन प्लेलिस्ट) और VAST (वीडियो विज्ञापन देने के लिए टेंप्लेट) विज्ञापन का इस्तेमाल किया है, तो जवाबों में दिए गए कोई भी स्टैंडर्ड ट्रैकिंग इवेंट अपने-आप SDK टूल की मदद से भेजा जाता है.

इवेंट के टाइप टेबल 2 में दिए गए हैं. साथ ही, यहां इवेंट टाइप के बारे में पूरी जानकारी भी दी गई है उन्हें कब से चालू किया जा सकता है.

ब्रेक इवेंट की लाइफ़साइकल
चौथी इमेज: ब्रेक इवेंट का लाइफ़साइकल.
टेबल 2: ब्रेक इवेंट और उनके ब्यौरे.
ब्रेक इवेंट ब्यौरा
BREAK_STARTED तब ट्रिगर होता है, जब मुख्य कॉन्टेंट का मौजूदा मीडिया टाइम इसके बराबर हो ऐसे ब्रेक का position जो अब तक नहीं देखा गया है.
BREAK_CLIP_LOADING स्टिच की गई टाइमलाइन के ब्रेक की क्लिप लोड होने पर ही ट्रिगर होती है.
BREAK_CLIP_STARTED यह तब ट्रिगर होता है, जब ब्रेक की कोई क्लिप चलना शुरू होती है.
BREAK_CLIP_ENDED ब्रेक की क्लिप खत्म होने पर ट्रिगर होता है. कॉन्टेंट बनाने endedReason इन स्थितियों में जानकारी अपने-आप भर जाएगी:
  • टाइमलाइन से जुड़े ब्रेक की क्लिप को पूरा चलाया गया.
  • स्टिच की गई टाइमलाइन ब्रेक की क्लिप, अगली ब्रेक क्लिप में बदल जाती है.
  • ब्रेक की कोई भी क्लिप छोड़ दी जाती है.
  • ब्रेक की आखिरी क्लिप, पोस्ट-रोल एम्बेड किए गए ब्रेक के दौरान पूरी तरह चलती है.
  • कोई गड़बड़ी हुई.
BREAK_ENDED ब्रेक के दौरान लगी पिछली क्लिप के खत्म होने पर ट्रिगर होती है.

विज्ञापन इंसर्शन

Cast SDK टूल की मदद से, ऐप्लिकेशन अलग-अलग समय पर विज्ञापन दिखा और हटा सकते हैं का इस्तेमाल किया जा सकता है. विज्ञापन इंसर्शन के दो टाइप हैं, स्टैटिक और डाइनैमिक. स्टैटिक विज्ञापन इंसर्शन के लिए ज़रूरी है कि विज्ञापनों LoadRequestData वह भी इससे पहले. डाइनैमिक विज्ञापन इंसर्शन BreakManager addBreak एपीआई का इस्तेमाल, पहले से लोड किए गए कॉन्टेंट में ब्रेक डालने के लिए किया जाता है. हर तरह का इंसर्शन का तरीका कुछ विज्ञापन के टाइप के साथ काम करता हो. साथ काम करता है की खास जानकारी, इंटरऑपरेबिलिटी मैट्रिक्स में दी गई है.

स्टैटिक विज्ञापन इंसर्शन

स्टैटिक विज्ञापन इंसर्शन की सुविधा की मदद से, पहले काम का विज्ञापन मेटाडेटा जोड़ा जाता है इस्तेमाल करने में कुछ दिक्कतें हैं. यह जानकारी इसमें दी गई है: MediaInformation LoadRequestData में से. उदाहरण के लिए, इसे किसी कनेक्ट किए गए भेजने वाले के खाते में सेट किया जा सकता है लोड करने का मूल अनुरोध भेजा जाता है या उसे वेब रिसीवर ऐप्लिकेशन के ज़रिए शामिल किया जा सकता है LOAD के अनुरोध को इंटरसेप्ट कर रहा है. LoadRequestData को वापस प्रोसेसिंग के लिए वेब रिसीवर SDK, प्लेयर बना दिया गया है. यहां ज़्यादा देखें मीडिया लोड हो रहा है. सैंपल नीचे दिखाया गया है कि LOAD अनुरोध में मैन्युअल क्लाइंट-स्टिच किया गया विज्ञापन जोड़ा जा रहा है इंटरसेप्टर.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();

playerManager.setMessageInterceptor(
    cast.framework.messages.MessageType.LOAD, loadRequestData => {

  // Create the BreakClip.
  let clipClient = new cast.framework.messages.BreakClip('bc_client');
  clipClient.title = 'The Ad Title to be displayed during playback';
  clipClient.contentId = 'https://example.com/ad.mp4';
  clipClient.contentType = 'video/mp4';

  // Create the Break using the BreakClip id above.
  let breakPostrollClient = new cast.framework.messages.Break(
      'break_postroll_client', ['bc_client'], -1);

  // Set the ad information in the load request data.
  let media = loadRequestData.media;
  media.breakClips = [clipClient];
  media.breaks = [breakPostrollClient];

  return loadRequestData;
});

डाइनैमिक विज्ञापन इंसर्शन

डाइनैमिक विज्ञापन इंसर्शन की सुविधा, कॉन्टेंट के दौरान विज्ञापन के लिए ब्रेक सेट करती है प्लेबैक. ऐसा करने के लिए, BreakManager का इंस्टेंस पाएं और इस नंबर पर कॉल करें यह addBreak एपीआई. इसके लिए कम से कम दो पैरामीटर की ज़रूरत होती है, एम्बेड किए गए वीडियो को बड़ा किया गया Break और इसका कलेक्शन BreakClip. इसमें एक वैकल्पिक तीसरी प्रॉपर्टी शामिल की गई है, ताकि बदलाव बलपूर्वक भेजे जा सकें जब true पर सेट हो, तब MediaStatus ब्रॉडकास्ट के ज़रिए कनेक्टेड भेजने वाले लोग. टास्क कब शुरू होगा ब्रेक और ब्रेक की क्लिप जोड़ने के लिए, हर आईडी अलग-अलग होना चाहिए. ये विज्ञापन प्लेयर बनाने के बाद ही, उन्हें जोड़ा जा सकता है. वेब रिसीवर SDK टूल सक्रिय होता है यह PLAYER_LOADING प्लेयर बनने के बाद इवेंट. नीचे दिया गया सैंपल देखें. इसे एक इवेंट हैंडलर जो किसी स्ट्रीम के ID3 मेटाडेटा में हुए बदलावों के बारे में जवाब देता है और टाइमलाइन में डालने के लिए, Break और BreakClip ऑब्जेक्ट बनाता है.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

playerManager.addEventListener(cast.framework.events.EventType.ID3, (event) => {

  // Create the BreakClip.
  let clipEmbeddedExpanded = parseBreakClipFromData(event.segmentData);
  let breakEmbeddedExpanded = parseExpandedBreakFromData(event.segmentData);

  // Add the break and break clip.
  breakManager.addBreak(breakEmbeddedExpanded, [clipEmbeddedExpanded]);
});

डाइनैमिक विज्ञापन हटाना

डाइनैमिक ब्रेक हटाने के लिए, ऐप्लिकेशन को कॉल करना चाहिए removeBreakById मिलता है. फ़ंक्शन ब्रेक के एक स्ट्रिंग आइडेंटिफ़ायर को को समयावधि से निकाला गया. बताया गया breakId किसी एम्बेड किए गए वीडियो, बड़ा किया गया विज्ञापन के लिए ब्रेक. अगर विज्ञापन के लिए किसी दूसरे तरह के ब्रेक का पता चलता है, तो टाइमलाइन में मौजूद रहेगा. नीचे वह नमूना देखें, जो ब्रेक को हटा देता है.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

breakManager.removeBreakById('break_midroll_embedded_expanded');

ब्रेक लेने का तरीका

SDK टूल, डिफ़ॉल्ट ऐक्शन के बारे में बताता है. यह बताता है कि खिलाड़ी किस मोड में कॉन्टेंट चलाता है और कब ब्रेक लेता है और साथ ही, इसमें दिए गए कुछ एपीआई का इस्तेमाल करके, इसे अपनी पसंद के मुताबिक बनाने का तरीका बताता है इंच BreakManager.

ब्रेक का डिफ़ॉल्ट तरीका

जब सामान्य प्लेबैक के ज़रिए या Break पर आगे-पीछे करके Break डाला जाता है, SDK टूल यह जांच करके आकलन करेगा कि लोगों ने इसे पहले देखा है या नहीं यह isWatched प्रॉपर्टी. बनाए जाने के बाद, इस प्रॉपर्टी के लिए ब्रेक की डिफ़ॉल्ट वैल्यू false है. अगर आपने प्रॉपर्टी true है, मुख्य आईडी डालने पर ब्रेक नहीं चलाया जाएगा कॉन्टेंट चलता रहेगा. अगर प्रॉपर्टी false है, तो ब्रेक होगा डाला गया.

पिछले ब्रेक देखने पर, लागू करने की डिफ़ॉल्ट प्रोसेस में सभी Break शामिल होते हैं वे आइटम जिनका position, सीक ऑपरेशन के बीच है seekFrom और seekTo वैल्यू. ब्रेक की इस सूची से, SDK टूल उस Break को चलाएगा जिसका position वह seekTo वैल्यू के सबसे करीब है जिसकी isWatched प्रॉपर्टी इस पर सेट है false. इसके बाद उस ब्रेक की isWatched प्रॉपर्टी true और प्लेयर अपने ब्रेक की क्लिप चलाना शुरू करेगा. ब्रेक देखने के बाद, मुख्य कॉन्टेंट seekTo की पोज़िशन से फिर से चलेगा. अगर ऐसा नहीं है ब्रेक मौजूद है, फिर कोई ब्रेक नहीं चलाया जाएगा और मुख्य कॉन्टेंट फिर से शुरू हो जाएगा seekTo पोज़िशन पर चल रहा है.

ब्रेक के दौरान प्लेबैक की सुविधा चालू होने पर, SDK टूल सभी ज़रूरी अपडेट, कनेक्ट किए गए डिवाइस पर ब्रॉडकास्ट करेगा इसमें ऐप्लिकेशन भेजने वाले लोगों के आवेदन MediaStatus. ये ऐप्लिकेशन, ब्रॉडकास्ट मैसेज का इस्तेमाल करके, यह breakStatus प्रॉपर्टी. यह प्रॉपर्टी सिर्फ़ ब्रेक ब्रेक के दौरान तय की जाती है.

पाने वाले ऐप्लिकेशन, इससे जुड़ी जानकारी के बारे में सीधे तौर पर क्वेरी भी कर सकते हैं BreakClip के मौजूदा समय के हिसाब से प्लेहेड की स्थिति PlayerManager पर कॉल करके दिखाया गया getBreakClipCurrentTimeSec. इसी तरह, ऐप्लिकेशन इसके हिसाब से मौजूदा BreakClip की अवधि के लिए क्वेरी कर सकते हैं कॉल किया जा रहा है getBreakClipDurationSec.

कस्टम ब्रेक व्यवहार

डिफ़ॉल्ट तरीके ब्रेक और ब्रेक की क्लिप में बदलाव करने के लिए, setBreakClipLoadInterceptor और setBreakSeekInterceptor BreakManager में बताए गए तरीके.

ब्रेक सीक इंटरसेप्टर

ब्रेक सीक इंटरसेप्टर की मदद से, ऐप्लिकेशन को वीडियो पर आगे/पीछे जाने की गतिविधि को कंट्रोल किया जा सकता है से ज़्यादा मिलती-जुलती हैं या नहीं. सीक ऑपरेशन का अनुरोध किए जाने पर फ़ंक्शन ट्रिगर होता है जो एक या ज़्यादा ब्रेक पर आगे या पीछे जाता है. कॉल करने पर, BreakSeekData को कॉलबैक फ़ंक्शन में पैरामीटर के तौर पर पास किया जाता है. BreakSeekData ऑब्जेक्ट इसमें Break वे ऑब्जेक्ट जिनकी position प्रॉपर्टी मौजूदा संख्या के बीच की किसी संख्या पर सेट है प्लेहेड टाइम को इस तौर पर तय किया गया है seekFrom और सीक डेस्टिनेशन टाइम seekTo.

यह इंटरसेप्टर इसकी अनुमति देता है कि Break ऑब्जेक्ट को उनके हिसाब से बने ब्रेक में रखा जाए संशोधित. लागू किए जाने पर, ब्रेक सीक इंटरसेप्टर को यह बताना होगा कि कौनसा विज्ञापन वैकल्पिक रूप से बदला गया BreakSeekData ऑब्जेक्ट लौटाकर, चलाने के लिए ब्रेक लें. कॉन्टेंट बनाने प्लेयर, रिटर्न वैल्यू में शामिल सभी ब्रेक को चलाएगा. अगर कोई मान null का या ब्रेक सीक इंटरसेप्टर से कुछ भी वापस नहीं मिलता है, ब्रेक है छोड़ा गया.

इंटरसेप्टर को आसानी से लागू करने के लिए, नीचे दिया गया सैंपल देखें यह सुविधा, पहले से देखे गए ब्रेक के अपवाद हैं.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

breakManager.setBreakSeekInterceptor((breakSeekData) => {

  // Filter the breaks array by removing watched breaks.
  const unwatchedBreaks =
      breakSeekData.breaks.filter(adBreak => !adBreak.isWatched);
  breakSeekData.breaks = unwatchedBreaks;

  return breakSeekData;
});

ब्रेक क्लिप लोड इंटरसेप्टर

ब्रेक क्लिप लोड इंटरसेप्टर का इस्तेमाल करके, BreakClip ऑब्जेक्ट में बदलाव किया जा सकता है शुरू होने से पहले.

ब्रेक क्लिप लोड इंटरसेप्टर को सिर्फ़ इसके लिए इस्तेमाल किया जाता है स्टिच की गई टाइमलाइन के ब्रेक इसे इसकी मदद से सेट किया जा सकता है setBreakClipLoadInterceptor. Break में घुसने से पहले, हर व्यक्ति को एक बार इस इंटरसेप्टर को कॉल किया जाता है उस ब्रेक में BreakClip तय किया गया. SDK टूल, ओरिजनल वर्शन को पास करता है BreakClip ऑब्जेक्ट का इस्तेमाल, कॉलबैक फ़ंक्शन के पैरामीटर के तौर पर कर सकते हैं. इसके बाद ऐप्लिकेशन संशोधित कर सकता है इस BreakClip को जोड़ें और इसे दिखाएं, ताकि SDK टूल ब्रेक को फ़ेच कर सके और दिखा सके अपडेट किए गए कॉन्फ़िगरेशन वाली क्लिप. अगर null या कुछ नहीं मिलता है, तो ब्रेक का समय क्लिप को छोड़ दिया गया.

नीचे दिया गया उदाहरण देखें, जिसमें ब्रेक की क्लिप के contentUrl में बदलाव करने का तरीका बताया गया है: एक उपयोगिता फ़ंक्शन, getUrlFromClipId को कॉल करता है, जहां BreakClip का id को एक यूआरएल के साथ मैप किया गया है.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

breakManager.setBreakClipLoadInterceptor(
    (breakClip, breakClipLoadInterceptorContext) => {

  // Obtains the URL of a break clip id from a function call.
  breakClip.contentUrl = getUrlFromClipId(breakClip.id);

  return breakClip;
});

विज्ञापन स्किप करना

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

उपयोगकर्ता के लिए स्किप किए जा सकने वाले ब्रेक की क्लिप

ब्रेक की क्लिप को स्किप किए जा सकने वाले के तौर पर सेट करने से, उपयोगकर्ता कनेक्ट किए गए सेंडर से इंटरैक्ट कर सकते हैं ऐप्लिकेशन और स्मार्ट डिसप्ले डिवाइस का इस्तेमाल करें. इस समय ब्रेक की क्लिप चल रही है. सेट करना whenSkippable प्रॉपर्टी की सकारात्मक संख्या को सेकंड की गैर-ऋणात्मक संख्या में सेट करने से यह सुविधा BreakClip ऑब्जेक्ट. प्लेयर ब्रेक की क्लिप को स्किप करने की सुविधा देगा ब्रेक की क्लिप इतने सेकंड तक चली. इस वैल्यू को 0 पर सेट किया जा रहा है उपयोगकर्ताओं को ब्रेक क्लिप को तुरंत छोड़ने की सुविधा देता है.

// Create the BreakClip.
let clip = new cast.framework.messages.BreakClip('bc');
clip.title = 'The Ad Title to be displayed during playback';
clip.whenSkippable = 10; // Users can skip the clip after 10 seconds of playback.

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

प्रोग्राम के हिसाब से विज्ञापनों को स्किप करना

विज्ञापन किसी उपयोगकर्ता के इंटरैक्शन के बिना भी अपने-आप स्किप हो सकते हैं.

पूरा ब्रेक लेने के लिए, ऐप्लिकेशन को isWatched प्रॉपर्टी Break से true तक की है. लोड होने के दौरान ऐसा कभी भी किया जा सकता है क्रम या कॉन्टेंट चलाना. isWatched प्रॉपर्टी का आकलन प्लेयर जब ब्रेक का position मुख्य कॉन्टेंट के मौजूदा समय में पूरा हो जाए. पर उस पॉइंट पर, प्लेयर यह तय करेगा कि ब्रेक लिया जाना चाहिए या नहीं. नीचे दिया गया वह नमूना देखें, जो सभी ब्रेक के दौरान लूप में चलता है और प्लेयर लोड होते समय मान दिखाता है.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

playerManager.addEventListener(cast.framework.events.EventType.PLAYER_LOADING,
    (event) => {

  // Obtain the breaks and iterate through each item to skip all ad breaks.
  let breaks = breakManager.getBreaks();
  breaks.forEach((brk) => {
    brk.isWatched = true;
  });
});

प्रोग्राम के हिसाब से ब्रेक की किसी खास क्लिप को स्किप करने के लिए, ब्रेक क्लिप लोड इंटरसेप्टर का इस्तेमाल किया जाना चाहिए. इन्होंने बदलाव किया है null लौटा रहा है या कॉलबैक फ़ंक्शन में मान नहीं लौटा रहा है, क्लिप उस ब्रेक को छोड़ दिया जाएगा.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

breakManager.setBreakClipLoadInterceptor(
      (breakClip, breakClipLoadInterceptorContext) => {
  return null;
});