درج تبلیغات با متادیتای زمان بندی آگهی

این راهنما نحوه درج تبلیغات موقت با استفاده از روش Ad pod Timing Metadata (ATM) را برای دریافت زمان و مدت زمان دقیق تبلیغات موقت، از جمله تبلیغات پیش از پخش، شرح می‌دهد.

برای درج تبلیغات پیش از پخش و مدیریت بازگشت به محتوا پس از وقفه‌های تبلیغاتی میان‌برنامه، توصیه می‌کنیم APIهای زیر را فراخوانی کنید:

به صورت اختیاری، برای رویدادهای پخش زنده با همزمانی بالا، توصیه می‌کنیم API اطلاع‌رسانی زودهنگام تبلیغات (EABN) را برای برنامه‌ریزی تصمیمات مربوط به تبلیغات قبل از شروع تبلیغات فراخوانی کنید.

پیش‌نیازها

برای شروع، به یک رویداد پخش زنده برای نوع درج آگهی پویا (DAI) در Pod Serving Redirect نیاز دارید. یکی از روش‌های زیر را انتخاب کنید:

بازیابی جریان محتوا

وقتی کاربر یک رویداد پخش زنده را انتخاب می‌کند، برنامه‌ی کلاینت یک درخواست پخش زنده به Google Ad Manager ارسال می‌کند. در پاسخ پخش زنده، برنامه شناسه‌ی جلسه‌ی Google DAI و فراداده را برای گنجاندن در درخواست مانیفست پخش زنده استخراج می‌کند.

مثال زیر یک شناسه نشست Google DAI را به یک کنترل‌کننده مانیفست ارسال می‌کند:

https://MANIFEST_MANIPULATOR_URL/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY

هنگام پردازش درخواست پخش محتوای ویدیویی، شناسه جلسه Google DAI و CUSTOM_ASSET_KEY را از درخواست ذخیره کنید تا برای ادغام تبلیغات آماده شود.

بازیابی فراداده‌های زمان‌بندی پاد تبلیغات

برای بازیابی زمان‌بندی پاد تبلیغات، مراحل زیر را دنبال کنید:

  1. یک توکن HMAC ایجاد کنید .
  2. API دستگاه خودپرداز را با توکن HMAC فراخوانی کنید.

درخواست فراداده زمان‌بندی برای تبلیغات پیش از پخش

با استفاده از گزینه‌های زیر، تنظیمات پیش از پخش زنده رویداد خود را تأیید کنید:

برای بازیابی نتایج تصمیم‌گیری در مورد تبلیغات پیش از پخش، درخواستی به API ATM ارسال کنید.

مثال زیر یک درخواست ATM برای تبلیغات پیش از پخش ایجاد می‌کند:

curl "https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/pod.json?stream_id=SESSION_ID&ad_break_id=preroll&auth-token=your_signed_HMAC_token"

درخواست فراداده زمان‌بندی برای تبلیغات میان‌دوره‌ای

برای بازیابی متادیتای ad pod برای میان‌رده‌ها، این مراحل را دنبال کنید:

  1. مانیفست پخش زنده را تجزیه کنید تا نشانگرهای تبلیغاتی که شامل زمان و مدت زمان هر تبلیغ در میان برنامه هستند را پیدا کنید.
  2. برای درخواست مدت زمان دقیق ad pod و slate، با نقطه پایانی ATM API تماس بگیرید. API یک شیء JSON حاوی نتایج تصمیم‌گیری ad pod برمی‌گرداند.

مثال زیر یک درخواست ATM برای تبلیغات میان‌پرده ایجاد می‌کند:

curl "https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/pod.json?stream_id=SESSION_ID&ad_break_id=AD_BREAK_ID&pd=AD_BREAK_DURATION&auth-token=your_signed_HMAC_token"

در صورت موفقیت، خروجی مشابه شیء JSON زیر را مشاهده خواهید کرد:

{
  "status": "final",
  "ads": [
    {
      "duration_ms": 5046,
      "variants": {
        "devrel1428000": {
          "segment_extension": "ts",
          "segment_durations": {
            "timescale": 1000,
            "values": [
              5045
            ]
          }
        },
        "devrel1928000": {
          "segment_extension": "ts",
          "segment_durations": {
            "timescale": 1000,
            "values": [
              5045
            ]
          }
        }
      }
    }
  ],
  "slate": {
    "duration_ms": 0,
    "variants": {
      "devrel1428000": {
        "segment_extension": "ts",
        "segment_durations": {
          "timescale": 1000,
          "values": [
            5005,
            ...
            5046
          ]
        }
      },
      "devrel1928000": {
        "segment_extension": "ts",
        "segment_durations": {
          "timescale": 1000,
          "values": [
            5005,
            ...
            5046
          ]
        }
      }
    }
  }
}

تبلیغات را به محتوای مانیفست اضافه کنید

بخش‌های بعدی شما را در نحوه‌ی تغییر مانیفست پخش زنده و افزودن بخش‌های تبلیغاتی راهنمایی می‌کنند.

بخش‌های مربوط به تبلیغات را شناسایی کرده و ناپیوستگی‌ها را وارد کنید

همانطور که هر مانیفست متغیر را پردازش می‌کنید، برچسب‌های EXT-X-CUE-IN و EXT-X-CUE-OUT را در جریان خود شناسایی کنید که نشان دهنده شروع و پایان یک وقفه تبلیغاتی است.

تگ‌های EXT-X-CUE-IN و EXT-X-CUE-OUT را با عناصر EXT-X-DISCONTINUITY جایگزین کنید تا پخش‌کننده ویدیوی کلاینت بتواند بین محتوا و تبلیغات جابجا شود.

مانیفست مثال زیر جایگزین تگ‌های EXT-X-CUE-IN و EXT-X-CUE-OUT می‌شود:

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-CUE-OUT:17.450
#EXTINF:5.000,
contentorigin.com/3.ts
#EXTINF:5.000,
contentorigin.com/4.ts
#EXTINF:5.000,
contentorigin.com/5.ts
#EXTINF:2.450,
contentorigin.com/6.ts
#EXT-X-CUE-IN
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

مثال زیر یک مانیفست جایگزین شده را نشان می‌دهد:

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXTINF:5.000,
#EXT-X-DISCONTINUITY
{... Insert ad segments here ...}
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

بخش‌های تبلیغاتی Google DAI رمزگذاری نشده‌اند. اگر محتوای شما رمزگذاری شده است، با وارد کردن عنصر EXT-X-KEY:METHOD=NONE قبل از اولین بخش تبلیغاتی هر تبلیغ، رمزگذاری را حذف کنید. در پایان تبلیغ، با وارد کردن EXT-X-KEY مناسب، رمزگذاری را دوباره اضافه کنید.

زمان شروع، مدت زمان و فهرست آگهی‌های تبلیغاتی آینده را پیگیری کنید.

ساخت URL های بخش تبلیغات

بخش‌های محتوایی بین تگ‌های EXT-X-DISCONTINUITY را با URLهای مربوط به هر بخش تبلیغاتی جایگزین کنید. برای تعیین تعداد بخش‌های تبلیغاتی که باید درج شوند، از ads.segment_durations.values ​​ارائه شده در پاسخ JSON از API ATM استفاده کنید.

برای بازگشت به محتوا قبل از تکمیل شدن ad pod، مانند زمانی که یک تگ EXT-X-CUE-IN شناسایی می‌شود، دستکاری‌کننده‌ی مانیفست شما باید پارامتر d= را به URL آخرین بخش تبلیغ اضافه کند. این پارامتر بخش را کوتاه می‌کند تا از تأثیر بر جدول زمانی پخش‌کننده‌ی ویدیوی کلاینت جلوگیری کند.

مثال زیر یک URL از پیش بارگذاری شده برای بخش تبلیغات مانیفست را مونتاژ می‌کند. توجه داشته باشید که بخش‌های تبلیغات از یک شاخص مبتنی بر صفر استفاده می‌کنند:

https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/preroll/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID

مثال زیر یک URL مربوط به بخش تبلیغات میانی را برای مانیفست آماده می‌کند:

https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID

مثال زیر بخش‌های تبلیغاتی را به مانیفست اضافه می‌کند:

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/2.ts?stream_id=SESSION_ID
#EXTINF:2.450,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/3.ts?stream_id=SESSION_ID
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

ساخت قطعات تخته سنگ

برای پر کردن فاصله بین تبلیغ و محتوا، بخش‌های slate را وارد کنید. از آرایه slates.segment_durations.values ​​از پاسخ JSON رابط برنامه‌نویسی ATM برای تعیین مدت زمان هر بخش slate استفاده کنید. در صورت نیاز، توالی مدت زمان‌های بخش را برای پر کردن کل فضای تبلیغ، حلقه کنید.

برای بازگشت به محتوا قبل از تکمیل شدن ad pod، مانند زمانی که یک تگ EXT-X-CUE-IN شناسایی می‌شود، پارامتر d= را به URL آخرین بخش slate اضافه کنید. این پارامتر بخش را کوتاه می‌کند تا از تأثیر بر جدول زمانی پخش‌کننده ویدیوی کلاینت جلوگیری شود. مقدار پارامترهای d= باید یک عدد صحیح باشد که مدت زمان کوتاه شدن بخش را بر حسب میلی‌ثانیه نشان می‌دهد.

مثال زیر یک قطعه تخته سنگ را مونتاژ می‌کند:

https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID

عدد slate/0 در مثال، شماره تکرار slate را نشان می‌دهد. برای تعیین اینکه آیا از 0 شروع کنید و این عدد را برای هر حلقه slate افزایش دهید، یا آن را برای همه تکرارها روی 0 نگه دارید، به قابلیت سازگاری و ذخیره‌سازی پخش‌کننده ویدیوی کلاینت خود مراجعه کنید.

مدیریت بازگشت به محتوا

بعد از اینکه کنترل‌کننده‌ی مانیفست شما تمام بخش‌ها را از ad pod وارد کرد، کنترل‌کننده‌ی مانیفست شما باید به جریان محتوا بازگردد. برای بازگشت به جریان محتوا، یکی از روش‌های زیر را انتخاب کنید. هر روش برای دقیق نگه داشتن جدول زمانی جریان، به یک بخش تنظیم مجدد نهایی نیاز دارد.

پر کردن و تنظیم مجدد: بخش‌های slate را وارد کنید و slate را حلقه کنید. مدت زمان را پر کنید و عناصر EXT-X-DISCONTINUITY را بین هر تکرار slate وارد کنید. برای آخرین بخش، پارامتر d= را بر حسب میلی‌ثانیه اضافه کنید تا با شروع محتوا مطابقت داشته باشد.

بازگشت فوری: با استفاده از پارامتر d= و به دنبال آن محتوا، یک بخش slate با ترازبندی مجدد وارد کنید.

پخش‌کننده ویدیو بدون تغییر در جدول زمانی، به محتوا برمی‌گردد.

مثال زیر با پر کردن باقیمانده مدت زمان پخش آگهی با بخش‌های جدولی، یک گذار ایجاد می‌کند.

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXT-X-DISCONTINUITY
#EXTINF:2.450,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID&d=2450
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

در این روش، کنترل‌کننده‌ی مانیفست شما در صورت نیاز، slate را حلقه می‌کند و پارامتر d= URL را فقط به آخرین بخش slate اضافه می‌کند. این فرآیند دقیقاً با شروع برنامه‌ریزی‌شده‌ی محتوای اصلی هم‌تراز می‌شود.

مثال زیر نحوه استفاده از یک بخش slate واحد با پارامتر d= را نشان می‌دهد تا به دقیق نگه داشتن جدول زمانی بازیکن، زمانی که کل فاصله باقی‌مانده را با slateهای حلقه‌ای پر نمی‌کنید، کمک کند.

#EXTM3U
#EXT-X-VERSION:6
#EXT-X-TARGETDURATION:6
#EXT-X-MEDIA-SEQUENCE:0

#EXTINF:5.000,
contentorigin.com/1.ts
#EXTINF:5.000,
contentorigin.com/2.ts
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/1.ts?stream_id=SESSION_ID
#EXTINF:5.000,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/ad/0/profile/ENCODING_PROFILE/2.ts?stream_id=SESSION_ID
#EXT-X-DISCONTINUITY
#EXTINF:2.450,
https://dai.google.com/linear/pods/v1/adv/network/NETWORK_CODE/custom_asset/CUSTOM_ASSET_KEY/ad_break_id/AD_BREAK_ID/slate/0/profile/ENCODING_PROFILE/0.ts?stream_id=SESSION_ID&d=2450
#EXT-X-DISCONTINUITY
#EXTINF:5.000,
contentorigin.com/7.mp4
#EXTINF:5.000,
contentorigin.com/8.mp4

اختیاری: زمان پخش تبلیغات را تنظیم کنید

برای افزایش نرخ پر شدن، یک اعلان اولیه تبلیغات (EABN) با مدت زمان پخش تبلیغات، پارامترهای هدف‌گیری سفارشی و داده‌های سیگنال SCTE-35 ارسال کنید. برای جزئیات بیشتر، به ارسال اعلان‌های اولیه تبلیغات مراجعه کنید.