इस गाइड में, Pod serving API और मेनिफ़ेस्ट मैनिपुलेटर की मदद से, HLS या DASH लाइव स्ट्रीम लोड करने के लिए क्लाइंट ऐप्लिकेशन डेवलप करने के बारे में बताया गया है.
ज़रूरी शर्तें
जारी रखने से पहले, आपके पास ये चीज़ें होनी चाहिए:
लाइव स्ट्रीम इवेंट के लिए कस्टम ऐसेट की, जिसे
Pod serving redirectDAI टाइप के साथ कॉन्फ़िगर किया गया है. यह कुंजी पाने के लिए, यह तरीका अपनाएं:LiveStreamEventऑब्जेक्ट औरdynamicAdInsertionTypeप्रॉपर्टी कोPOD_SERVING_REDIRECTenum वैल्यू पर सेट करके,LiveStreamEventService.createLiveStreamEventsतरीके को कॉल करने के लिए, SOAP API क्लाइंट लाइब्रेरी का इस्तेमाल करें. सभी क्लाइंट लाइब्रेरी के लिए, क्लाइंट लाइब्रेरी और उदाहरण कोड देखें.
यह पता लगाएं कि इंटरैक्टिव मीडिया विज्ञापन (आईएमए) SDK टूल, आपके प्लैटफ़ॉर्म के लिए उपलब्ध है या नहीं. हमारा सुझाव है कि रेवेन्यू बढ़ाने के लिए, IMA SDK का इस्तेमाल करें. ज़्यादा जानकारी के लिए, DAI के लिए 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"
जब आपका प्लेयर तैयार हो जाए, तब वीडियो चलाना शुरू करें.
विज्ञापन इवेंट को मॉनिटर करने की अनुमति
टाइम किए गए मेटाडेटा के लिए, अपनी स्ट्रीम के कंटेनर फ़ॉर्मैट की जांच करें:
ट्रांसपोर्ट स्ट्रीम (टीएस) कंटेनर वाली एचएलएस स्ट्रीम, टाइम किए गए आईडी3 टैग का इस्तेमाल करती हैं. इससे टाइम किया गया मेटाडेटा ट्रांसफ़र किया जाता है. ज़्यादा जानकारी के लिए, एचटीटीपी लाइव स्ट्रीमिंग (एचएलएस) के साथ काम करने वाले कॉमन मीडिया ऐप्लिकेशन फ़ॉर्मैट के बारे में जानकारी लेख पढ़ें.
DASH स्ट्रीम, मेनिफ़ेस्ट में इवेंट तय करने के लिए
EventStreamएलिमेंट का इस्तेमाल करती हैं.जब सेगमेंट में पेलोड डेटा के लिए इवेंट मैसेज (
emsg) बॉक्स शामिल होते हैं, तब DASH स्ट्रीमInbandEventStreamएलिमेंट का इस्तेमाल करती हैं. इनमें ID3 टैग शामिल होते हैं. ज़्यादा जानकारी के लिए, InbandEventStream देखें.सीएमएएफ़ स्ट्रीम, जैसे कि DASH और HLS, में आईडी3 टैग वाले
emsgबॉक्स का इस्तेमाल किया जाता है.
अपनी स्ट्रीम से ID3 टैग वापस पाने के लिए, अपने वीडियो प्लेयर की गाइड देखें. ज़्यादा जानकारी के लिए, टाइम किए गए मेटाडेटा को मैनेज करने से जुड़ी गाइड देखें
आईडी3 टैग से विज्ञापन इवेंट आईडी पाने के लिए, यह तरीका अपनाएं:
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", ... }आईडी3 टैग को
TXXXgoogle_{ad_event_ID}फ़ॉर्मैट में फ़िल्टर करें:TXXXgoogle_1234567890123456789
विज्ञापन इवेंट का डेटा दिखाएं
TagSegment ऑब्जेक्ट ढूंढने के लिए, यह तरीका अपनाएं:
Poll ad metadata से विज्ञापन का मेटाडेटा
tagsऑब्जेक्ट वापस पाएं.tagsऑब्जेक्ट,TagSegmentऑब्जेक्ट का कलेक्शन होता है.टाइप
progressवालाTagSegmentऑब्जेक्ट ढूंढने के लिए, पूरे विज्ञापन इवेंट आईडी का इस्तेमाल करें.विज्ञापन के इवेंट आईडी के पहले 17 वर्णों का इस्तेमाल करके, अन्य टाइप का
TagSegmentऑब्जेक्ट ढूंढें.TagSegmentमिलने के बाद,ad_break_idप्रॉपर्टी का इस्तेमाल कुंजी के तौर पर करें. इससे विज्ञापन के मेटाडेटाad_breaksऑब्जेक्ट मेंAdBreakऑब्जेक्ट को ढूंढा जा सकता है.यहां दिए गए उदाहरण में,
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गड़बड़ी का कोड मिलेगा.
स्ट्रीम ऐक्टिविटी मॉनिटर (एसएएम) का इस्तेमाल करके, सभी विज्ञापन इवेंट के पुराने लॉग की जांच की जा सकती है. ज़्यादा जानकारी के लिए, लाइव स्ट्रीम को मॉनिटर करना और उससे जुड़ी समस्या हल करना लेख पढ़ें