इस गाइड में, Pod serving API और मेनिफ़ेस्ट मैनिपुलेटर की मदद से, HLS या DASH लाइव स्ट्रीम लोड करने के लिए, क्लाइंट ऐप्लिकेशन डेवलप करने के बारे में बताया गया है.
ज़रूरी शर्तें
आगे बढ़ने से पहले, आपके पास ये चीज़ें होनी चाहिए:
लाइव स्ट्रीम इवेंट के लिए, कस्टम ऐसेट की कुंजी. इसे
Pod serving redirectDAI टाइप के साथ कॉन्फ़िगर किया गया हो. यह कुंजी पाने के लिए, यह तरीका अपनाएं:LiveStreamEventऑब्जेक्ट औरPOD_SERVING_REDIRECTenum वैल्यू पर सेट की गईdynamicAdInsertionTypeप्रॉपर्टी के साथ,LiveStreamEventService.createLiveStreamEventsतरीके को कॉल करने के लिए, SOAP API क्लाइंट लाइब्रेरी का इस्तेमाल करें. सभी क्लाइंट लाइब्रेरी के लिए, क्लाइंट लाइब्रेरी और उदाहरण कोड देखें.
यह पता करें कि आपके प्लैटफ़ॉर्म के लिए, Interactive Media Ads (IMA) SDK उपलब्ध है या नहीं. हमारा सुझाव है कि रेवेन्यू बढ़ाने के लिए, IMA SDK का इस्तेमाल करें. ज़्यादा जानकारी के लिए, डीएआई के लिए IMA SDK सेट अप करना लेख पढ़ें.
स्ट्रीम का अनुरोध करना
जब आपका उपयोगकर्ता कोई स्ट्रीम चुनता है, तो यह तरीका अपनाएं:
लाइव स्ट्रीम सेवा के तरीके के लिए,
POSTअनुरोध करें. ज़्यादा जानकारी के लिए, तरीका: स्ट्रीम देखें.application/x-www-form-urlencodedयाapplication/jsonफ़ॉर्मैट में, विज्ञापन टारगेटिंग पैरामीटर पास करें. इस अनुरोध से, Google DAI के साथ स्ट्रीम सेशन रजिस्टर होता है.यहां दिए गए उदाहरण में, स्ट्रीम का अनुरोध किया गया है:
फ़ॉर्म एन्कोडिंग
const url = `https://dai.google.com/ssai/pods/api/v1/` + `network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/stream`; const params = new URLSearchParams({ cust_params: 'section=sports&page=golf,tennis' }).toString(); const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: params }); console.log(await response.json());JSON एन्कोडिंग
const url = `https://dai.google.com/ssai/pods/api/v1/` + `network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/stream`; const response = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ cust_params: { section: 'sports', page: 'golf,tennis' } }) }); console.log(await response.json());अनुरोध पूरा होने पर, आपको इस तरह का आउटपुट दिखेगा:
{ "stream_id": "8d2b2292-6356-4c0e-94be-cece01d2df2e:DLS", "media_verification_url": "https://dai.google.com/view/.../event/c14aZDWtQg-ZwQaEGl6bYA/media/", "metadata_url": "https://dai.google.com/linear/pods/hls/.../metadata", "session_update_url": "https://dai.google.com/linear/.../session", "polling_frequency": 10 }JSON रिस्पॉन्स में, स्ट्रीम सेशन आईडी ढूंढें और अगले चरणों के लिए अन्य डेटा सेव करें.
विज्ञापन के मेटाडेटा के लिए पोल करना
विज्ञापन के मेटाडेटा के लिए पोल करने के लिए, यह तरीका अपनाएं:
स्ट्रीम रजिस्ट्रेशन के रिस्पॉन्स से,
metadata_urlवैल्यू पढ़ें.एंडपॉइंट के लिए,
GETअनुरोध करें. ज़्यादा जानकारी के लिए, तरीका: मेटाडेटा देखें.यहां दिए गए उदाहरण में, विज्ञापन का मेटाडेटा फ़ेच किया गया है:
const response = await fetch(metadata_url); console.log(await response.json());अनुरोध पूरा होने पर, आपको मौजूदा और आने वाले विज्ञापन ब्रेक के लिए, PodMetadata रिस्पॉन्स मिलेगा:
{ "tags":{ "google_5555555555":{ "ad":"0000229834_ad1", "ad_break_id":"0000229834", "type":"firstquartile" }, "google_1234567890123456789":{ "ad":"0000229834_ad1", "ad_break_id":"0000229834", "type":"progress" }, ... }, "ads":{ "0000229834_ad1":{ "ad_break_id":"0000229834", "position":1, "duration":15, "clickthrough_url":"https://.../", ... }, ... }, "ad_breaks":{ "0000229834":{ "type":"mid", "duration":15, "ads":1 }, ... } }tagsऑब्जेक्ट को बाद के चरणों के लिए सेव करें.polling_frequencyवैल्यू का इस्तेमाल करके, टाइमर सेट करें, ताकि सभी आने वाले विज्ञापन ब्रेक के लिए, नियमित तौर पर मेटाडेटा का अनुरोध किया जा सके.
अपने वीडियो प्लेयर में स्ट्रीम लोड करना
रजिस्ट्रेशन के रिस्पॉन्स से सेशन आईडी मिलने के बाद, आईडी को अपने मेनिफ़ेस्ट मैनिपुलेटर में पास करें या वीडियो प्लेयर में स्ट्रीम लोड करने के लिए, मेनिफ़ेस्ट यूआरएल बनाएं.
सेशन आईडी पास करने के लिए, अपने मेनिफ़ेस्ट मैनिपुलेटर का दस्तावेज़ देखें. अगर आपने कोई मेनिफ़ेस्ट मैनिपुलेटर डेवलप किया है, तो लाइव स्ट्रीम के लिए मेनिफ़ेस्ट मैनिपुलेटर देखें.
यहां दिए गए उदाहरण में, मेनिफ़ेस्ट यूआरएल को असेंबल किया गया है:
https://<your_manifest_manipulator_url>/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY"
जब आपका प्लेयर तैयार हो जाए, तो प्लेबैक शुरू करें.
विज्ञापन के इवेंट सुनना
टाइम किए गए मेटाडेटा के लिए, अपनी स्ट्रीम का कंटेनर फ़ॉर्मैट देखें:
ट्रांसपोर्ट स्ट्रीम (टीएस) कंटेनर वाली HLS स्ट्रीम, टाइम किए गए मेटाडेटा को ले जाने के लिए, टाइम किए गए ID3 टैग का इस्तेमाल करती हैं. ज़्यादा जानकारी के लिए, एचटीटीपी लाइव स्ट्रीमिंग (HLS) के साथ, कॉमन मीडिया ऐप्लिकेशन फ़ॉर्मैट के बारे में जानकारी देखें.
DASH स्ट्रीम, मेनिफ़ेस्ट में इवेंट तय करने के लिए,
EventStreamएलिमेंट का इस्तेमाल करती हैं.जब सेगमेंट में पेलोड डेटा के लिए, इवेंट मैसेज (
emsg) बॉक्स शामिल होते हैं, तब DASH स्ट्रीमInbandEventStreamएलिमेंट का इस्तेमाल करती हैं. इनमें ID3 टैग भी शामिल होते हैं. ज़्यादा जानकारी के लिए, InbandEventStreamदेखें.CMAF स्ट्रीम, जिनमें DASH और HLS शामिल हैं, ID3 टैग वाले
emsgबॉक्स का इस्तेमाल करती हैं.
अपनी स्ट्रीम से ID3 टैग पाने के लिए, अपने वीडियो प्लेयर की गाइड देखें. ज़्यादा जानकारी के लिए, टाइम किए गए मेटाडेटा को मैनेज करने की गाइड देखें
ID3 टैग से विज्ञापन इवेंट आईडी पाने के लिए, यह तरीका अपनाएं:
urn:google:dai:2018याhttps://aomedia.org/emsg/ID3के साथ,scheme_id_uriके हिसाब से इवेंट फ़िल्टर करें.message_dataफ़ील्ड से बाइट ऐरे एक्सट्रैक्ट करें.यहां दिए गए उदाहरण में,
emsgडेटा को JSON में डिकोड किया गया है:{ "scheme_id_uri": "https://developer.apple.com/streaming/emsg-id3", "presentation_time": 27554, "timescale": 1000, "message_data": "ID3TXXXgoogle_1234567890123456789", ... }TXXXgoogle_{ad_event_ID}फ़ॉर्मैट वाले ID3 टैग फ़िल्टर करें:TXXXgoogle_1234567890123456789
विज्ञापन इवेंट का डेटा दिखाना
TagSegment
ऑब्जेक्ट ढूंढने के लिए, यह तरीका अपनाएं:
विज्ञापन के मेटाडेटा के लिए पोल विज्ञापन मेटाडेटा से, विज्ञापन के मेटाडेटा का
tagsऑब्जेक्ट वापस पाएं.tagsऑब्जेक्ट,TagSegmentऑब्जेक्ट का एक कलेक्शन होता है.progressटाइप वालाTagSegmentऑब्जेक्ट ढूंढने के लिए, विज्ञापन इवेंट के पूरे आईडी का इस्तेमाल करें.अन्य टाइप का
TagSegmentऑब्जेक्ट ढूंढने के लिए, विज्ञापन इवेंट आईडी के पहले 17 वर्णों का इस्तेमाल करें.TagSegmentमिलने के बाद, विज्ञापन के मेटाडेटा केad_breaksऑब्जेक्ट मेंAdBreakऑब्जेक्ट ढूंढने के लिए,ad_break_idप्रॉपर्टी को कुंजी के तौर पर इस्तेमाल करें.यहां दिए गए उदाहरण में,
AdBreakऑब्जेक्ट ढूंढा गया है:{ "type":"mid", "duration":15, "ads":1 }विज्ञापन ब्रेक में विज्ञापन की पोज़िशन के बारे में जानकारी दिखाने के लिए,
TagSegmentऔरAdBreakडेटा का इस्तेमाल करें. उदाहरण के लिए,Ad 1 of 3.
मीडिया की पुष्टि करने वाले पिंग भेजना
progress टाइप को छोड़कर, हर विज्ञापन इवेंट के लिए, मीडिया की पुष्टि करने वाला पिंग भेजें.
Google DAI, progress इवेंट को खारिज कर देता है. साथ ही, इन इवेंट को बार-बार भेजने से, आपके ऐप्लिकेशन की परफ़ॉर्मेंस पर असर पड़ सकता है.
विज्ञापन इवेंट का मीडिया की पुष्टि करने वाला पूरा यूआरएल जनरेट करने के लिए, यह तरीका अपनाएं:
स्ट्रीम के रिस्पॉन्स से, विज्ञापन इवेंट के पूरे आईडी को
media_verification_urlवैल्यू में जोड़ें.पूरे यूआरएल के साथ,
GETअनुरोध करें:// media_verification_url: "https://dai.google.com/view/.../event/c14aZDWtQg-ZwQaEGl6bYA/media/" const completeUrl = `${media_verification_url}google_5555555555123456789`; const response = await fetch(completeUrl);अनुरोध पूरा होने पर, आपको कोड स्टेटस
202रिस्पॉन्स मिलेगा. ऐसा न होने पर, आपको404गड़बड़ी का कोड मिलेगा.
विज्ञापन के सभी इवेंट का पुराना लॉग देखने के लिए, स्ट्रीम ऐक्टिविटी मॉनिटर (एसएएम) का इस्तेमाल किया जा सकता है. ज़्यादा जानकारी के लिए, लाइव स्ट्रीम की निगरानी करना और उससे जुड़ी समस्याओं को हल करना लेख पढ़ें