يغطّي هذا الدليل تطوير تطبيق عميل لتحميل بث مباشر بتنسيق HLS أو DASH باستخدام Pod serving API ومعالج البيان.
المتطلبات الأساسية
قبل المتابعة، يجب أن يتوفّر لديك ما يلي:
مفتاح أصل مخصّص لحدث بث مباشر تم إعداده باستخدام نوع DAI
Pod serving redirectللحصول على هذا المفتاح، اتّبِع الخطوات التالية:استخدِم مكتبة عميل SOAP API لاستدعاء الطريقة
LiveStreamEventService.createLiveStreamEventsباستخدام عنصرLiveStreamEventوضبط السمةdynamicAdInsertionTypeعلى قيمة التعدادPOD_SERVING_REDIRECT. للاطّلاع على جميع مكتبات العملاء، راجِع مكتبات العملاء ونموذج الرمز البرمجي.
تحديد ما إذا كانت حزمة تطوير البرامج (SDK) لإعلانات الوسائط التفاعلية (IMA) متاحة على منصّتك ننصحك باستخدام حزمة IMA SDK لزيادة الإيرادات. لمعرفة التفاصيل، يُرجى الاطّلاع على إعداد حزمة IMA SDK لإعلانات DAI.
إرسال طلب بث
عندما يختار المستخدم بثًا، اتّبِع الخطوات التالية:
أرسِل طلب
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لطلب البيانات الوصفية بانتظام لجميع فواصل الإعلانات اللاحقة.
تحميل البث في مشغّل الفيديو
بعد الحصول على معرّف الجلسة من استجابة التسجيل، مرِّر المعرّف إلى معالج البيان أو أنشئ عنوان URL لبيان لتحميل البث في مشغّل فيديو.
لمعرفة كيفية تمرير معرّف الجلسة، يُرجى الاطّلاع على مستندات معالج البيان. إذا كنت تطوّر معالج بيان، يُرجى الاطّلاع على معالج البيان للبث المباشر.
يجمع المثال التالي عنوان URL لبيان:
https://<your_manifest_manipulator_url>/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY"
عندما يصبح المشغّل جاهزًا، ابدأ التشغيل.
الاستماع إلى أحداث الإعلانات
تحقَّق من تنسيق حاوية البث للبيانات الوصفية المحدّدة بوقت:
تستخدم بثوث HLS التي تحتوي على حاويات Transport Stream (TS) علامات ID3 المحدّدة بوقت لنقل البيانات الوصفية المحدّدة بوقت. لمعرفة التفاصيل، يُرجى الاطّلاع على لمحة عن تنسيق Common Media Application Format مع البث المباشر وفق بروتوكول HTTP (HLS).
تستخدم بثوث DASH عناصر
EventStreamلتحديد الأحداث في البيان.تستخدم بثوث DASH عناصر
InbandEventStreamعندما تحتوي الشرائح على مربّعات رسالة الحدث (emsg) لبيانات الحمولة، بما في ذلك علامات ID3. لمعرفة التفاصيل، يُرجى الاطّلاع على InbandEventStream.تستخدم بثوث CMAF، بما في ذلك DASH وHLS، مربّعات
emsgالتي تحتوي على علامات ID3.
لاسترداد علامات ID3 من البث، يُرجى الرجوع إلى دليل مشغّل الفيديو. لمعرفة التفاصيل، يُرجى الاطّلاع على دليل التعامل مع البيانات الوصفية المحدّدة بوقت
لاسترداد معرّف حدث الإعلان من علامات ID3، اتّبِع الخطوات التالية:
- فلتر الأحداث حسب
scheme_id_uriباستخدامurn:google:dai:2018أوhttps://aomedia.org/emsg/ID3. استخرِج مصفوفة البايت من حقل
message_data.يفكّ المثال التالي ترميز بيانات
emsgإلى JSON:{ "scheme_id_uri": "https://developer.apple.com/streaming/emsg-id3", "presentation_time": 27554, "timescale": 1000, "message_data": "ID3TXXXgoogle_1234567890123456789", ... }فلتر علامات ID3 بالتنسيق
TXXXgoogle_{ad_event_ID}:TXXXgoogle_1234567890123456789
عرض بيانات أحداث الإعلان
للعثور على العنصر
TagSegment
، اتّبِع الخطوات التالية:
استردِد عنصر البيانات الوصفية للإعلان
tagsمن التحقّق من البيانات الوصفية للإعلان. عنصرtagsهو مصفوفة من عناصرTagSegment.استخدِم معرّف حدث الإعلان الكامل للعثور على عنصر
TagSegmentمن النوعprogress.استخدِم أول 17 حرفًا من معرّف حدث الإعلان للعثور على عنصر
TagSegmentمن أنواع أخرى.بعد الحصول على
TagSegment، استخدِم السمةad_break_idكمفتاح للعثور علىAdBreakعنصر في عنصرad_breaksللبيانات الوصفية للإعلان.يعثر المثال التالي على عنصر
AdBreak:{ "type":"mid", "duration":15, "ads":1 }استخدِم بيانات
TagSegmentوAdBreakلعرض معلومات عن موضع الإعلان في فاصل الإعلانات. على سبيل المثال،Ad 1 of 3.
إرسال طلبات ping للتحقّق من الوسائط
لكل حدث إعلان، باستثناء النوع progress، أرسِل طلب ping للتحقّق من الوسائط.
يتجاهل Google DAI أحداث progress، وقد يؤثر إرسال هذه الأحداث بشكل متكرّر في أداء تطبيقك.
لإنشاء عنوان URL الكامل للتحقّق من الوسائط لحدث إعلان، اتّبِع الخطوات التالية:
من استجابة البث، ألحِق معرّف حدث الإعلان الكامل بقيمة
media_verification_url.أرسِل طلب
GETباستخدام عنوان URL الكامل:// 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.
يمكنك استخدام أداة مراقبة نشاط البث (SAM) لفحص سجلّ سابق لجميع أحداث الإعلانات. لمعرفة التفاصيل، يُرجى الاطّلاع على مراقبة بث مباشر وتحديد المشاكل وحلّها