इस गाइड में, Pod serving API और मेनिफ़ेस्ट मैनिपुलेटर की मदद से, HLS या DASH लाइव स्ट्रीम लोड करने के लिए क्लाइंट ऐप्लिकेशन डेवलप करने के बारे में बताया गया है.
ज़रूरी शर्तें
जारी रखने से पहले, आपके पास ये चीज़ें होनी चाहिए:
लाइव स्ट्रीम इवेंट के लिए कस्टम ऐसेट की, जिसे
Pod serving redirect
DAI टाइप के साथ कॉन्फ़िगर किया गया है. यह कुंजी पाने के लिए, यह तरीका अपनाएं:LiveStreamEvent
ऑब्जेक्ट औरdynamicAdInsertionType
प्रॉपर्टी कोPOD_SERVING_REDIRECT
enum वैल्यू पर सेट करके,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
गड़बड़ी का कोड मिलेगा.
स्ट्रीम ऐक्टिविटी मॉनिटर (एसएएम) का इस्तेमाल करके, सभी विज्ञापन इवेंट के पुराने लॉग की जांच की जा सकती है. ज़्यादा जानकारी के लिए, लाइव स्ट्रीम को मॉनिटर करना और उससे जुड़ी समस्या हल करना लेख पढ़ें