مشتری را برای تغییر مسیر سرویس غلاف آماده کنید

این راهنما توسعه یک برنامه کلاینت را برای بارگیری جریان مستقیم HLS یا DASH با API سرویس Pod و دستکاری کننده مانیفست شما پوشش می‌دهد.

پیش نیازها

قبل از ادامه، باید موارد زیر را داشته باشید:

  • یک کلید دارایی سفارشی برای یک رویداد پخش زنده که با نوع DAI Pod serving redirect پیکربندی شده است. برای به دست آوردن این کلید، موارد زیر را دنبال کنید:

  • تعیین کنید که آیا SDK تبلیغات رسانه تعاملی (IMA) برای پلتفرم شما موجود است یا خیر. توصیه می کنیم از IMA SDK برای افزایش درآمد استفاده کنید. برای جزئیات، به تنظیم IMA SDk برای DAI مراجعه کنید.

درخواست پخش جریانی بدهید

هنگامی که کاربر شما یک جریان را انتخاب می کند، موارد زیر را انجام دهید:

  1. یک درخواست POST به روش سرویس پخش زنده ارسال کنید. برای جزئیات، روش: جریان را ببینید.

  2. پارامترهای هدف گذاری تبلیغات را در قالب های 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
    }
    
  3. در پاسخ JSON، شناسه جلسه جریان را بیابید و سایر داده ها را برای مراحل بعدی ذخیره کنید.

فراداده آگهی نظرسنجی

برای نظرسنجی فراداده تبلیغات، موارد زیر را انجام دهید:

  1. مقدار metadata_url را از پاسخ ثبت جریان بخوانید.

  2. یک درخواست 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
        },
        ...
      }
    }
    
  3. شی tags را برای مراحل بعدی ذخیره کنید.

  4. یک تایمر با استفاده از مقدار 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، موارد زیر را انجام دهید:

  1. رویدادها را بر اساس scheme_id_uri با urn:google:dai:2018 یا https://aomedia.org/emsg/ID3 فیلتر کنید.
  2. آرایه بایت را از قسمت message_data استخراج کنید.

    مثال زیر داده های emsg را به JSON رمزگشایی می کند:

    {
      "scheme_id_uri": "https://developer.apple.com/streaming/emsg-id3",
      "presentation_time": 27554,
      "timescale": 1000,
      "message_data": "ID3TXXXgoogle_1234567890123456789",
      ...
    }
    
  3. برچسب‌های ID3 را با قالب TXXXgoogle_{ad_event_ID} فیلتر کنید:

    TXXXgoogle_1234567890123456789
    

نمایش داده‌های رویداد تبلیغاتی

برای یافتن شیء TagSegment ، موارد زیر را انجام دهید:

  1. شیء tags فراداده آگهی را از فراداده آگهی نظرسنجی بازیابی کنید. شی tags آرایه ای از اشیاء TagSegment است.

  2. از شناسه کامل رویداد آگهی برای یافتن یک شیء TagSegment با نوع progress استفاده کنید.

  3. از 17 نویسه اول شناسه رویداد تبلیغاتی برای یافتن یک شی TagSegment از انواع دیگر استفاده کنید.

  4. بعد از اینکه TagSegment را داشتید، از ویژگی ad_break_id به عنوان کلید برای یافتن شی AdBreak در آبجکت ad_breaks ابرداده ad استفاده کنید.

    مثال زیر یک شی AdBreak را پیدا می کند:

    {
      "type":"mid",
      "duration":15,
      "ads":1
    }
    
  5. از داده‌های TagSegment و AdBreak برای نشان دادن اطلاعات در مورد موقعیت آگهی در وقفه تبلیغاتی استفاده کنید. به عنوان مثال، Ad 1 of 3 .

پینگ های تایید رسانه را ارسال کنید

برای هر رویداد تبلیغاتی، به جز نوع progress ، یک پینگ تأیید رسانه ارسال کنید. Google DAI رویدادهای progress را نادیده می گیرد و ارسال مکرر این رویدادها ممکن است بر عملکرد برنامه شما تأثیر بگذارد.

برای ایجاد URL تأیید رسانه کامل یک رویداد تبلیغاتی، موارد زیر را انجام دهید:

  1. از پاسخ جریان، شناسه کامل رویداد آگهی را به مقدار media_verification_url اضافه کنید.

  2. با 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) برای بررسی گزارش تاریخی همه رویدادهای تبلیغاتی استفاده کنید. برای جزئیات، به نظارت و عیب‌یابی پخش زنده مراجعه کنید