تتيح لك Google DAI Pod Serving API تنفيذ ميزة إدراج الإعلانات من جهة الخادم باستخدام "إعلانات Google" مع الحفاظ على التحكّم في عملية دمج الفيديوهات.
يوضّح لك هذا الدليل كيفية التفاعل مع واجهة برمجة التطبيقات Pod Serving API وتحقيق وظائف مشابهة باستخدام حزمة تطوير البرامج (SDK) لعرض الإعلانات الديناميكية في "إعلانات الوسائط التفاعلية". إذا كانت لديك أسئلة محدّدة حول الوظائف المتوافقة، يُرجى التواصل مع مدير حسابك على Google.
تتيح واجهة برمجة التطبيقات Pod Serving API بث ملفات البودكاست باستخدام بروتوكولَي البث HLS أو MPEG-DASH. يركّز هذا الدليل على أحداث البث باستخدام بروتوكول HLS ويسلّط الضوء على الاختلافات الرئيسية بين HLS وMPEG-DASH في خطوات محدّدة.
لدمج واجهة برمجة التطبيقات Pod Serving API في تطبيقك لبث الفيديوهات عند الطلب، أكمِل الخطوات التالية:
تقديم طلب تسجيل بث إلى "مدير إعلانات Google"
أرسِل طلب POST إلى نقطة نهاية تسجيل البث. وستتلقّى بدورك ملفًا شخصيًا استجابة JSON يحتوي على معرّف البث لإرساله إلى خادم تعديل البيان ونقاط نهاية Pod Serving API المرتبطة به.
نقطة النهاية لواجهة برمجة التطبيقات
POST: /ondemand/pods/api/v1/network/{network_code}/stream_registration
Host: dai.google.com
Content-Type: application/json
مَعلمات المسار
{network_code} |
رمز شبكة "مدير إعلانات Google 360" |
مَعلمات محتوى JSON
targeting_parameters |
عنصر JSON يحتوي على مَعلمات استهداف الإعلان مطلوبة |
استجابة JSON
media_verification_url |
عنوان URL الأساسي لإرسال إشعارات إلى أحداث تتبُّع التشغيل يتم إنشاء عنوان URL كامل لإثبات ملكية الوسائط بإضافة معرّف حدث الإعلان إلى عنوان URL الأساسي هذا. |
metadata_url |
عنوان 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 \
-d '{"targeting_parameters":{"url":"http://example.com"}}' \
-H 'Content-Type: application/json' \
https://dai.google.com/ondemand/pods/api/v1/network/21775744923/stream_registration
مثال على إجابة
{
"media_verification_url": "https://dai.google.com/.../media/",
"metadata_url": "https://dai.google.com/.../metadata",
"stream_id": "6e69425c-0ac5-43ef-b070-c5143ba68541:CHS",
"valid_for": "8h0m0s",
"valid_until": "2023-03-24T08:30:26.839717986-07:00"
}
في حال حدوث أخطاء، يتم عرض رموز أخطاء HTTP العادية بدون محتوى استجابة JSON.
تحليل استجابة JSON وتخزين القيم ذات الصلة
طلب بيان البث من أداة التحكّم في البيان
ولكل أداة معالجة بيان بيانات تطبيق تنسيقات مختلفة للطلبات والردود. يُرجى التواصل مع موفّر أداة التحكّم لمعرفة متطلباته المحدّدة. إذا كنت بصدد تنفيذ أداة معالجة البيان الخاصة بك، اطّلِع على دليل أداة معالجة البيان للتعرّف على requirements for this component.
بشكل عام، عليك تمرير معرّف البث الذي تم إرجاعه من نقطة نهاية التسجيل أعلاه إلى أداة التحكّم في البيان لكي تنشئ بيانًا خاصًا بالجلسة. ما لم يُحدّد صراحةً من قِبل أداة التحكّم في البيان، فإنّ الاستجابة لطلب البيان هي بث فيديو يحتوي على كل من المحتوى والإعلانات.
مثال على طلب (cURL)
curl https://{manifest_manipulator}/video/1331997/stream/6e69425c-0ac5-43ef-b070-c5143ba68541:CHS/vod_manifest.m3u8
مثال على الاستجابة (HLS)
#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
تشغيل البث
حمِّل ملف البيان الذي تلقّيته من خادم تعديل البيان في مشغّل فيديو وابدأ التشغيل.
طلب البيانات الوصفية لمجموعة الإعلانات المتسلسلة من "مدير إعلانات Google"
قدِّم طلب GET
إلى metadata_url
الذي تلقّيته في الخطوة الأولى. يجب تنفيذ هذه الخطوة بعد استلام البيان المُدمَج من أداة تعديل البيان. وفي المقابل، تتلقّى عنصر JSON يحتوي على الجدول التالي
المَعلمات:
tags |
مجموعة من أزواج المفتاح/القيمة تحتوي على جميع أحداث الإعلانات التي تظهر في
البث تكون المفاتيح هي أوّل 17 حرفًا من رقم تعريف حدث إعلاني
يظهر في البيانات الوصفية الموقّتة للبث، أو رقم تعريف الحدث الإعلاني الكامل في حال الأحداث
من النوع progress .
كل قيمة هي عنصر يحتوي على المَعلمات التالية:
|
||||||||||||||||||
ads |
مجموعة من أزواج المفتاح والقيمة التي تصف جميع الإعلانات التي تظهر في البث مفاتيح
هي أرقام تعريف الإعلانات التي تتطابق مع القيم المتوفّرة في كائن tags
المذكور أعلاه. كل قيمة هي عنصر يحتوي على المَعلمات التالية:
|
||||||||||||||||||
ad_breaks |
مجموعة من أزواج المفتاح والقيمة التي تصف جميع الفواصل الإعلانية التي تظهر في البث
المفاتيح هي معرّفات الفواصل الإعلانية التي تتطابق مع القيم المتوفّرة في كائنَي tags
و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-TS، تظهر البيانات الوصفية كعلامات ID3 v2.3 ضمن النطاق. تحتوي كل علامة
بيانات وصفية على رقم التعريف TXXX
، وتبدأ القيمة بالسلسلة google_
متبوعةً بسلسلة من الأحرف. هذه القيمة هي رقم تعريف حدث الإعلان.
العنصر XXX
في TXXX
ليس عنصرًا نائبًا. السلسلة TXXX
هي معرّف علامة ID3
محجوزة "للنص الذي يحدّده المستخدم".
مثال على علامة ID3
TXXXgoogle_1234567890123456789
بالنسبة إلى أحداث MP4، يتم إرسالها كأحداث emsg ضمن النطاق تحاكي علامات ID3 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",
...
}
تعرِض بعض مكتبات مشغّلات الوسائط تلقائيًا أحداث emsg التي تحاكي علامات ID3 كعلامات ID3 أصلية. في هذه الحالة، تعرِض أحداث البث بتنسيق MP4 علامات ID3 متطابقة مثل MPEG_TS.
تعديل واجهة مستخدم تطبيق مشغّل الفيديو لدى العميل
يمكن مطابقة كلّ رقم تعريف حدث إعلان مع مفتاح في عنصر tags
من الخطوة 4.
تتم مطابقة هذه القيم في خطوتَين:
تحقّق من عنصر
tags
بحثًا عن مفتاح يتطابق مع رقم تعريف الحدث الإعلاني الكامل. في حال العثور على مطابقة، استرجع نوع الحدث والكائنَينad
وad_break
المرتبطَين به. يجب أن يكون نوع هذه الأحداث هوprogress
.إذا لم يتم العثور على مطابقة لرقم تعريف حدث الإعلان الكامل، تحقَّق من
tags
العنصر بحثًا عن مفتاح يتطابق مع أول 17 حرفًا من رقم تعريف حدث الإعلان. استرجع نوع الحدث وعنصرَيad
وad_break
المرتبطَين به. من المفترض أن يؤدي ذلك إلى استرداد جميع الأحداث التي لها أنواع غيرprogress
.استخدِم هذه المعلومات التي تم استرجاعها لتعديل واجهة المستخدم الخاصة بتطبيقك. على سبيل المثال، عندتلقّي حدث
start
أو حدثprogress
الأول، يمكنك إخفاء عناصر التحكّم في التقديم/الترجيع في المشغّل وعرض تراكب يصف موضع الإعلان الحالي في الفاصل الإعلاني، على سبيل المثال: "الإعلان 1 من 3".
أمثلة على أرقام تعريف أحداث الإعلانات
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"
},
...
}
إرسال إشعارات بشأن التحقّق من الوسائط
يجب إرسال إشعار إثبات ملكية الوسائط إلى "مدير إعلانات Google" في كل مرة يتم فيها تلقّي حدث إعلان
بنوع غير progress
.
لإنشاء عنوان URL الكامل لإثبات ملكية الوسائط لحدث إعلاني، يجب إلحاق رقم تعريف حدث الإعلان بالكاملmedia_verification_url
بقيمة media_verification_url
من استجابة تسجيل البث.
أرسِل طلب GET باستخدام عنوان URL الكامل. إذا كان طلب إثبات الملكية
ناجحًا، ستتلقّى استجابة HTTP تتضمّن رمز الحالة 202
.
بخلاف ذلك، سيظهر لك رمز خطأ HTTP 404
.
مثال على طلب (cURL)
curl https://{...}/media/google_5555555555123456789
مثال على استجابة ناجحة
HTTP/1.1 202 Accepted