लाइव स्ट्रीम के लिए क्लाइंट वीडियो प्लेयर ऐप्लिकेशन

Google DAI Pod Serving API की मदद से, सर्वर-साइड पर विज्ञापन शामिल करें Google Ads की मदद से, वीडियो स्टिचिंग पर कंट्रोल रखा जा सकता है.

इस गाइड में, Pod Serving API का इस्तेमाल करने और उन्हें हासिल करने का तरीका बताया गया है ये सुविधाएं IMA डीएआई SDK टूल पर भी मिलती हैं. इसके बारे में खास सवालों के लिए ठीक तरह से काम करने के लिए, अपने Google खाता मैनेजर से संपर्क करें.

Pod Serving API, एचएलएस या एमपीईजी-डीएश में पॉड सर्विंग स्ट्रीम के साथ काम करता है स्ट्रीमिंग प्रोटोकॉल पर लागू हो. इस गाइड में एचएलएस से लाइव स्ट्रीमिंग करने के साथ-साथ, खास जानकारी को हाइलाइट करें कुछ चरणों में, एचएलएस और एमपीईजी-डीएएस के बीच का अंतर बताया गया है.

वीओडी (वीडियो ऑन डिमांड) स्ट्रीम के लिए, अपने ऐप्लिकेशन में Pod Serving API इंटिग्रेट करने के लिए, इसके लिए, नीचे दिया गया तरीका अपनाएं:

DAI Pod Serving API के लिए, स्ट्रीम रजिस्ट्रेशन का अनुरोध करें

स्ट्रीम रजिस्ट्रेशन एंडपॉइंट के लिए पोस्ट का अनुरोध करें. इसके बदले में आपको JSON जवाब, जिसमें स्ट्रीम आईडी शामिल है, जिसे मेनिफ़ेस्ट में बदलाव के लिए भेजा जा सकता है सर्वर और उससे जुड़े Pod Serving API एंडपॉइंट.

एपीआई एंडपॉइंट

POST: /ssai/pods/api/v1/network/{network_code}/custom_asset/{custom_asset}/stream
Host: dai.google.com
Content-Type: application/x-www-form-urlencoded

पाथ पैरामीटर

{network_code} आपका Google Ad Manager 360 नेटवर्क कोड
{custom_asset} Google Ad Manager में इस इवेंट से जुड़ा कस्टम आइडेंटिफ़ायर.

फ़ॉर्म-एन्कोडेड बॉडी पैरामीटर

कोड में बदले गए फ़ॉर्म का वैकल्पिक सेट टारगेटिंग पैरामीटर .

JSON में जवाब दिया गया

media_verification_url प्लेबैक ट्रैकिंग इवेंट को पिंग करने के लिए बेस यूआरएल. मीडिया की मदद से खाते की पुष्टि करें इस बेस यूआरएल में विज्ञापन इवेंट आईडी जोड़कर, यूआरएल बनाया जाता है.
metadata_url विज्ञापन पॉड मेटाडेटा का अनुरोध करने के लिए यूआरएल.
stream_id मौजूदा स्ट्रीम सेशन की पहचान करने के लिए इस्तेमाल की गई स्ट्रिंग.
valid_for मौजूदा स्ट्रीम सेशन के खत्म होने में लगने वाला समय dhms (दिन, घंटे, मिनट, सेकंड) फ़ॉर्मैट. उदाहरण के लिए, 2h0m0.000s, दो घंटे की अवधि दिखाता है.
valid_until ISO 8601 के तौर पर, वह समय जब मौजूदा स्ट्रीम सेशन खत्म हो जाता है yyyy-MM-dd'T'hh:mm:ss.sssssssss[+|-]hh:mm में तारीख और समय स्ट्रिंग फ़ॉर्मैट.

अनुरोध का उदाहरण (cURL)

curl -X POST \
     -H "Content-Type: application/x-www-form-urlencoded" \
     -d "cust_params=\"section%3Dsports%26page%3Dgolf%2Ctennis\"" \
  https://dai.google.com/ssai/pods/api/v1/network/51636543/custom_asset/ext-doc-ps-redirect-hls/stream

रिस्पॉन्स का उदाहरण

{
  "stream_id":"9fe8fe4f-f12e-4fed-b509-0ca269bb1668:TUL",
  "media_verification_url":"https://dai.google.com/.../media/",
  "metadata_url":"https://dai.google.com/.../metadata",
  "session_update_url":"https://dai.google.com/.../session",
  "polling_frequency":10
}

गड़बड़ियां होने पर, JSON के रिस्पॉन्स के बिना स्टैंडर्ड एचटीटीपी गड़बड़ी कोड दिखाए जाते हैं शरीर.

JSON के रिस्पॉन्स को पार्स करें और ज़रूरी वैल्यू सेव करें.

मेनिफ़ेस्ट मैनिफ़ेक्टर से स्ट्रीम मेनिफ़ेस्ट का अनुरोध करें

मेनिफ़ेस्ट में बदलाव करने वाले हर एलिमेंट के लिए, अनुरोध और रिस्पॉन्स का अलग-अलग फ़ॉर्मैट होता है. संपर्क जानकारी आपको बदलाव करने की अनुमति देने वाली कंपनी को अपनी खास ज़रूरतों को समझने के लिए ऐसा करना चाहिए. अगर आप: अपना मेनिफ़ेस्ट मैनिफ़ेक्टर लागू करना और मेनिफ़ेस्ट मैनिफ़ेस्टर में बदलाव करने के बारे में जानकारी गाइड पढ़ें. इस कॉम्पोनेंट के लिए ज़रूरी शर्तें.

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

अनुरोध का उदाहरण (cURL)

curl https://{manifest_manipulator}/video/1331997/stream/6e69425c-0ac5-43ef-b070-c5143ba68541:CHS/vod_manifest.m3u8

रिस्पॉन्स का उदाहरण (एचएलएस)

#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs0",LANGUAGE="en",NAME="English",AUTOSELECT=YES,DEFAULT=YES,URI="abcd1234_     subitles-en.vtt"
#EXT-X-STREAM-INF:BANDWIDTH=5000000,RESOLUTION=1920x1080,CODECS="avc1.42e00a,mp4a.40.2"
abcd1234_video-1080p.m3u8

स्ट्रीम चलाएं

मेनिफ़ेस्ट में बदलाव करने वाले सर्वर से मिले मेनिफ़ेस्ट को वीडियो प्लेयर और प्लेबैक शुरू करने के लिए किया जा सकता है.

नए AdBreak मेटाडेटा के लिए पोल

ऐप्लिकेशन हर विज्ञापन ब्रेक के लिए मेटाडेटा को वापस पाने की ज़िम्मेदारी लेता है, इसलिए यह को ट्रिगर किए जाने की ज़रूरत है. ऐसा करने के लिए, आपको नए विज्ञापन के लिए, डीएआई एपीआई metadata_url का नियमित तौर पर पोल करने के लिए टाइमर जानकारी. पोलिंग का इंटरवल polling_frequency में बताया गया है इस फ़ील्ड में.

इसके बदले में, आपको एक JSON ऑब्जेक्ट मिलता है, जिसमें ये पैरामीटर शामिल होते हैं:

tags यह की-वैल्यू पेयर का एक सेट है. इसमें वे सभी विज्ञापन इवेंट शामिल होते हैं जो स्ट्रीम. कुंजियां, किसी विज्ञापन इवेंट के पहले 17 वर्णों की होती हैं ऐसा आईडी जो स्ट्रीम के तय समय वाले मेटाडेटा में या इवेंट के मामले में दिखता है progress टाइप का पूरा विज्ञापन इवेंट आईडी.

हर वैल्यू एक ऑब्जेक्ट होता है, जिसमें ये पैरामीटर शामिल होते हैं:

ad ऐसे विज्ञापन का आईडी जो ads ऑब्जेक्ट में मौजूद 'की' से मेल खाता है.
ad_break_id विज्ञापन के लिए ब्रेक का आईडी, जो ad_breaks में दी गई कुंजी से मेल खाता है ऑब्जेक्ट है.
type विज्ञापन इवेंट का टाइप. विज्ञापन इवेंट के टाइप:
start विज्ञापन की शुरुआत में ट्रिगर किया जाता है.
firstquartile पहले क्वार्टाइल के आखिर में फ़ायर किया जाता है.
midpoint विज्ञापन के बीच में चालू होता है.
thirdquartile तीसरे चतुर्थांश के आखिर में सक्रिय किया गया.
complete विज्ञापन के आखिर में ट्रिगर होता है.
progress पूरे विज्ञापन में समय-समय पर फ़ायर होता है, ताकि ऐप्लिकेशन को यह सूचना दी जा सके कि कोई विज्ञापन ब्रेक चल रहा है.
ads की-वैल्यू पेयर का सेट, जो स्ट्रीम में दिखने वाले सभी विज्ञापनों का ब्यौरा देता है. कॉन्टेंट बनाने कुंजियां, ऐसे विज्ञापन आईडी होते हैं जो tags ऑब्जेक्ट में मिली वैल्यू से मेल खाते हैं ऊपर दी गई सूची में मौजूद हैं. हर वैल्यू एक ऑब्जेक्ट होता है, जिसमें ये पैरामीटर शामिल होते हैं:
ad_break_id विज्ञापन के लिए ब्रेक का आईडी, जो ad_breaks में दी गई कुंजी से मेल खाता है ऑब्जेक्ट है.
position विज्ञापन में विज्ञापनों के सेट के अंतर्गत यह विज्ञापन दिखाए जाने का स्थान फ़्लोटिंग पॉइंट सेकंड में ब्रेक लें.
duration विज्ञापन की अवधि फ़्लोटिंग पॉइंट सेकंड में.
clickthrough_url वह यूआरएल जो तब खुलना चाहिए, जब कोई उपयोगकर्ता इस विज्ञापन से इंटरैक्ट करता है, अगर यह सुविधा मौजूद है.
ad_breaks की-वैल्यू पेयर का सेट, जो स्ट्रीम में दिखने वाले सभी विज्ञापन के लिए ब्रेक की जानकारी देता है. कुंजियां विज्ञापन के लिए ब्रेक के आईडी होती हैं, जो tags में मिली वैल्यू से मेल खाती हैं और ऊपर दी गई सूची में शामिल ads ऑब्जेक्ट हैं. हर वैल्यू एक ऑब्जेक्ट होती है इसमें ये पैरामीटर शामिल हैं:
type विज्ञापन के लिए ब्रेक का टाइप. विज्ञापन के लिए ब्रेक के टाइप pre (प्री-रोल) हैं, mid (वीडियो के बीच में दिखने वाले विज्ञापन) और post (वीडियो खत्म होने के बाद विज्ञापन).
duration विज्ञापन के लिए ब्रेक की अवधि, फ़्लोटिंग पॉइंट सेकंड में.
ads इस ब्रेक में विज्ञापनों की संख्या.

हर पोल के बाद इन वैल्यू को सेव करें, ताकि समय वाले मेटाडेटा इवेंट को इसमें जोड़ा जा सके आपकी वीडियो स्ट्रीम.

अनुरोध का उदाहरण (cURL)

curl https://dai.google.com/.../metadata

रिस्पॉन्स का उदाहरण

{
  "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
    },
    ...
  }
}

विज्ञापन इवेंट सुनें

ऑडियो/वीडियो स्ट्रीम में ट्रिगर किए गए विज्ञापन इवेंट के ज़रिए, टाइमस्टैंप वाले मेटाडेटा को सुनें वीडियो प्लेयर की स्क्रीन पर.

MPEG-टीएस स्ट्रीम के लिए, मेटाडेटा इन-बैंड ID3 v2.3 टैग के तौर पर दिखता है. हर मेटाडेटा टैग का आईडी TXXX है और मान google_ स्ट्रिंग से शुरू होता है इसके बाद, कई वर्ण शामिल हैं. यह वैल्यू, विज्ञापन इवेंट आईडी है.

TXXX में मौजूद XXX, प्लेसहोल्डर नहीं है. स्ट्रिंग TXXX, ID3 टैग आईडी है "उपयोगकर्ता के तय किए गए टेक्स्ट" के लिए रिज़र्व रखा गया है.

ID3 टैग का उदाहरण

TXXXgoogle_1234567890123456789

MP4 स्ट्रीम के लिए, इन्हें इन-बैंड मैसेज इवेंट के तौर पर भेजा जाता है और ये आईडी3 v2.3 की नकल करते हैं टैग. काम के हर मैसेज बॉक्स के लिए, इनमें से कोई एक वैल्यू scheme_id_uri होती है https://aomedia.org/emsg/ID3 या https://developer.apple.com/streaming/emsg-id3 और message_data मान ID3TXXXgoogle_ से शुरू होता है. यह message_data वैल्यू, बिना ID3TXXX प्रीफ़िक्स, विज्ञापन इवेंट का आईडी है.

मैसेज बॉक्स का उदाहरण

मीडिया प्लेयर की लाइब्रेरी के आधार पर, डेटा का स्ट्रक्चर अलग-अलग हो सकता है.

अगर विज्ञापन इवेंट आईडी google_1234567890123456789 है, तो जवाब ऐसा दिखता है शामिल करें:

{
  "scheme_id_uri": "https://developer.apple.com/streaming/emsg-id3",
  "presentation_time": 27554,
  "timescale": 1000,
  "message_data": "ID3TXXXgoogle_1234567890123456789",
  ...
}

कुछ मीडिया प्लेयर लाइब्रेरी, ID3 की नकल करने वाले मैसेज इवेंट अपने-आप दिखाती हैं नेटिव ID3 टैग के रूप में टैग. इस मामले में, MP4 स्ट्रीम में एक जैसे ID3 टैग मौजूद हैं MPEG_TS के रूप में.

क्लाइंट वीडियो प्लेयर ऐप्लिकेशन का यूज़र इंटरफ़ेस (यूआई) अपडेट करना

हर विज्ञापन इवेंट आईडी को, चौथे चरण में मौजूद tags ऑब्जेक्ट में मौजूद कुंजी से मैच किया जा सकता है. इन वैल्यू का मिलान दो चरणों में होता है:

  1. विज्ञापन इवेंट के पूरे आईडी से मैच करने वाली कुंजी के लिए, tags ऑब्जेक्ट की जांच करें. अगर आपने मिलान मिल गया है, तो इवेंट टाइप और उससे जुड़े ad को फिर से पाएं और ad_break ऑब्जेक्ट. इन इवेंट का टाइप progress होना चाहिए.

    अगर पूरे विज्ञापन इवेंट आईडी के लिए कोई मैच नहीं मिलता है, तो tags की जांच करें ऑब्जेक्ट, विज्ञापन इवेंट आईडी के पहले 17 वर्णों से मेल खाने वाली कुंजी के लिए. इवेंट टाइप और उससे जुड़े ad और ad_break ऑब्जेक्ट वापस पाएं. इससे progress के अलावा दूसरे टाइप के सभी इवेंट फिर से हासिल हो जाएंगे.

  2. अपने खिलाड़ी के यूज़र इंटरफ़ेस (यूआई) को अपडेट करने के लिए, वापस लाई गई इस जानकारी का इस्तेमाल करें. उदाहरण के लिए, जब आपको start या पहला progress इवेंट मिलता है, तो अपने खिलाड़ी की फ़ोटो छिपाएं नियंत्रण और प्रदर्शित करने वाला ओवरले है, जो विज्ञापन में वर्तमान विज्ञापन की स्थिति के बारे में बताता है ब्रेक, उदाहरण के लिए: "3 में से 1 विज्ञापन".

उदाहरण विज्ञापन इवेंट आईडी

google_1234567890123456789 // Progress event ID
google_5555555555123456789 // First Quartile event ID

टैग ऑब्जेक्ट का उदाहरण

{
  "google_5555555555":{
    "ad":"0000229834_ad1",
    "ad_break_id":"0000229834",
    "type":"firstquartile"
  },
  "google_1234567890123456789":{
    "ad":"0000229834_ad1",
    "ad_break_id":"0000229834",
    "type":"progress"
  },
  ...
}

मीडिया की पुष्टि करने के लिए पिंग भेजें

हर बार विज्ञापन इवेंट होने पर, Ad Manager को मीडिया की पुष्टि करने वाला पिंग भेजना ज़रूरी है progress के अलावा किसी अन्य तरह का ईमेल मिला हो.

किसी विज्ञापन इवेंट के लिए, मीडिया की पुष्टि करने वाला पूरा यूआरएल जनरेट करने के लिए, यूआरएल के आखिर में स्ट्रीम रजिस्ट्रेशन से ली गई media_verification_url वैल्यू में विज्ञापन इवेंट आईडी जवाब.

पूरे यूआरएल के साथ जीईटी अनुरोध करें. अगर पुष्टि करने का अनुरोध सफल रहा, तो आपको 202 स्टेटस कोड के साथ एक एचटीटीपी रिस्पॉन्स मिला है. ऐसा न करने पर, आपको एचटीटीपी गड़बड़ी कोड 404 मिलेगा.

अनुरोध का उदाहरण (cURL)

curl https://{...}/media/google_5555555555123456789

सही जवाब का उदाहरण

HTTP/1.1 202 Accepted

अन्य संसाधन