این راهنما توسعه یک برنامه کلاینت را برای بارگیری جریان مستقیم HLS یا DASH با API سرویس Pod و دستکاری کننده مانیفست شما پوشش میدهد.
پیش نیازها
قبل از ادامه، باید موارد زیر را داشته باشید:
یک کلید دارایی سفارشی برای یک رویداد پخش زنده که با نوع DAI
Pod serving redirect
پیکربندی شده است. برای به دست آوردن این کلید، موارد زیر را دنبال کنید:از یک کتابخانه سرویس گیرنده SOAP API برای فراخوانی متد
LiveStreamEventService.createLiveStreamEvents
با یک شیLiveStreamEvent
استفاده کنید و ویژگیdynamicAdInsertionType
روی مقدار enumPOD_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 با کانتینرهای انتقال جریان (TS) از برچسبهای ID3 زمانبندیشده برای حمل ابردادههای زماندار استفاده میکنند. برای جزئیات، درباره قالب برنامه کاربردی رسانه رایج با HTTP Live Streaming (HLS) را ببینید.
جریانهای DASH از عناصر
EventStream
برای مشخص کردن رویدادها در مانیفست استفاده میکنند.جریانهای DASH از عناصر
InbandEventStream
زمانی استفاده میکنند که بخشها حاوی جعبههای پیام رویداد (emsg
) برای دادههای بار، از جمله برچسبهای ID3 هستند. برای جزئیات، InbandEventStream را ببینید.جریان های CMAF، از جمله DASH و HLS، از جعبه های
emsg
حاوی برچسب های ID3 استفاده می کنند.
برای بازیابی برچسب های ID3 از جریان خود، به راهنمای پخش کننده ویدیوی خود مراجعه کنید. برای جزئیات، به راهنمای فراداده زمانبندیشده Handle مراجعه کنید
برای بازیابی شناسه رویداد تبلیغاتی از برچسبهای 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
ابرداده ad استفاده کنید.مثال زیر یک شی
AdBreak
را پیدا می کند:{ "type":"mid", "duration":15, "ads":1 }
از دادههای
TagSegment
وAdBreak
برای نشان دادن اطلاعات در مورد موقعیت آگهی در وقفه تبلیغاتی استفاده کنید. به عنوان مثال،Ad 1 of 3
.
پینگ های تایید رسانه را ارسال کنید
برای هر رویداد تبلیغاتی، به جز نوع progress
، یک پینگ تأیید رسانه ارسال کنید. Google DAI رویدادهای progress
را نادیده می گیرد و ارسال مکرر این رویدادها ممکن است بر عملکرد برنامه شما تأثیر بگذارد.
برای ایجاد URL تأیید رسانه کامل یک رویداد تبلیغاتی، موارد زیر را انجام دهید:
از پاسخ جریان، شناسه کامل رویداد آگهی را به مقدار
media_verification_url
اضافه کنید.با 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
دریافت می کنید.
میتوانید از نظارت بر فعالیت جریان (SAM) برای بررسی گزارش تاریخی همه رویدادهای تبلیغاتی استفاده کنید. برای جزئیات، به نظارت و عیبیابی پخش زنده مراجعه کنید