این راهنما، توسعه یک برنامه کلاینت برای بارگذاری پخش زنده HLS یا DASH با API سرویسدهی Pod و کنترلکننده مانیفست شما را پوشش میدهد.
پیشنیازها
قبل از ادامه، باید موارد زیر را داشته باشید:
یک کلید دارایی سفارشی برای یک رویداد پخش زنده که با نوع DAI
Pod serving redirectپیکربندی شده است. برای دریافت این کلید، مراحل زیر را دنبال کنید:از یک کتابخانه کلاینت SOAP API برای فراخوانی متد
LiveStreamEventService.createLiveStreamEventsبا یک شیءLiveStreamEventو ویژگیdynamicAdInsertionTypeکه روی مقدار شمارشیPOD_SERVING_REDIRECTتنظیم شده است، استفاده کنید. برای مشاهده همه کتابخانههای کلاینت، به کتابخانههای کلاینت و کد نمونه مراجعه کنید.
بررسی کنید که آیا SDK تبلیغات رسانهای تعاملی (IMA) برای پلتفرم شما در دسترس است یا خیر. ما استفاده از IMA SDK را برای افزایش درآمد توصیه میکنیم. برای جزئیات بیشتر، به تنظیم IMA SDK برای DAI مراجعه کنید.
درخواست پخش جریانی بدهید
وقتی کاربر شما یک جریان را انتخاب میکند، موارد زیر را انجام دهید:
یک درخواست
POSTبه متد سرویس پخش زنده ارسال کنید. برای جزئیات بیشتر، به Method: stream مراجعه کنید.پارامترهای هدفگیری تبلیغات را در قالبهای
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را از پاسخ ثبت جریان (stream registration response) بخوانید.یک درخواست
GETبه نقطه پایانی ارسال کنید. برای جزئیات بیشتر، به Method: metadata مراجعه کنید.مثال زیر متادیتای تبلیغات را دریافت میکند:
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 مانیفست برای بارگذاری جریان در یک پخشکننده ویدیو بسازید.
برای ارسال شناسه جلسه، به مستندات دستکاریکننده مانیفست خود مراجعه کنید. اگر یک دستکاریکننده مانیفست ایجاد میکنید، برای پخش زنده به Manifest manipulator مراجعه کنید.
مثال زیر یک 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 زمانبندیشده برای حمل فرادادههای زمانبندیشده استفاده میکنند. برای جزئیات بیشتر، به «درباره قالب برنامه رسانهای مشترک با HTTP Live Streaming (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مربوط به متادیتای تبلیغات را از متادیتای تبلیغات Poll بازیابی کنید. شیءtagsآرایهای از اشیاءTagSegmentاست.از شناسه کامل رویداد تبلیغ برای یافتن یک شیء
TagSegmentبا نوعprogressاستفاده کنید.از ۱۷ کاراکتر اول شناسه رویداد تبلیغ برای یافتن یک شیء
TagSegmentاز انواع دیگر استفاده کنید.بعد از اینکه
TagSegmentایجاد کردید، از ویژگیad_break_idبه عنوان کلید برای یافتن شیءAdBreakدر متادیتای تبلیغad_breaksاستفاده کنید.مثال زیر یک شیء
AdBreakرا پیدا میکند:{ "type":"mid", "duration":15, "ads":1 }از دادههای
TagSegmentوAdBreakبرای نمایش اطلاعات مربوط به موقعیت تبلیغ در متن تبلیغ استفاده کنید. برای مثال،Ad 1 of 3.
ارسال پینگهای تأیید رسانه
برای هر رویداد تبلیغاتی، به جز نوع progress ، یک پینگ تأیید رسانه ارسال کنید. 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) برای بررسی گزارش تاریخچهی تمام رویدادهای تبلیغاتی استفاده کنید. برای جزئیات بیشتر، به بخش نظارت و عیبیابی پخش زنده مراجعه کنید.