Tài liệu hướng dẫn này mô tả cách chèn điểm chèn quảng cáo bằng phương thức Siêu dữ liệu về thời gian của nhóm quảng cáo (ATM) để tìm nạp thời gian và thời lượng chính xác cho điểm chèn quảng cáo, bao gồm cả quảng cáo trước video.
Để chèn quảng cáo chèn trước và quản lý việc quay lại nội dung sau khi kết thúc điểm chèn quảng cáo chèn giữa, bạn nên gọi các API sau:
- API Siêu dữ liệu về thời gian của nhóm quảng cáo (ATM): truy vấn kết quả quyết định về nhóm quảng cáo, bao gồm cả thời lượng quảng cáo và bảng thông báo.
- Điểm cuối phân đoạn quảng cáo: yêu cầu phân đoạn quảng cáo hoặc bảng quảng cáo có lựa chọn chấm dứt nhóm quảng cáo hiện tại.
Bạn có thể gọi API Thông báo điểm chèn quảng cáo sớm (EABN) để lên lịch quyết định về quảng cáo trước khi điểm chèn quảng cáo bắt đầu (đối với các sự kiện phát trực tiếp có tính đồng thời cao).
Điều kiện tiên quyết
Để bắt đầu, bạn cần thiết lập một sự kiện phát trực tiếp cho loại Chèn quảng cáo động (DAI) Chuyển hướng phân phát nhóm. Chọn một trong các phương thức sau:
- Giao diện người dùng Ad Manager: Thiết lập một sự kiện phát trực tiếp cho DAI.
- API Ad Manager: Sử dụng một thư viện ứng dụng (các lựa chọn hiện có) để gọi phương thức
LiveStreamEventService.createLiveStreamEvents. Đặt tham sốLiveStreamEvent.dynamicAdInsertionTypethànhPOD_SERVING_REDIRECT.
Truy xuất luồng nội dung
Khi người dùng chọn một sự kiện phát trực tiếp, ứng dụng khách sẽ đưa ra yêu cầu phát trực tiếp đến Google Ad Manager. Trong phản hồi luồng phát, ứng dụng sẽ trích xuất mã phiên DAI của Google và siêu dữ liệu để đưa vào yêu cầu tệp kê khai luồng phát.
Ví dụ sau đây truyền mã phiên DAI của Google đến một trình xử lý tệp kê khai:
https://MANIFEST_MANIPULATOR_URL/manifest.m3u8?DAI_stream_ID=SESSION_ID&network_code=NETWORK_CODE&DAI_custom_asset_key=CUSTOM_ASSET_KEY
Khi xử lý yêu cầu phát nội dung video, hãy lưu trữ mã phiên DAI của Google và CUSTOM_ASSET_KEY từ yêu cầu để chuẩn bị cho việc ghép quảng cáo.
Truy xuất siêu dữ liệu về thời gian của nhóm quảng cáo
Để truy xuất thời gian của nhóm quảng cáo, hãy làm theo các bước sau:
- Tạo mã thông báo HMAC.
- Gọi ATM API bằng mã thông báo HMAC.
Yêu cầu siêu dữ liệu về thời gian cho quảng cáo trước video
Xác minh chế độ cài đặt quảng cáo chèn trước cho sự kiện phát trực tiếp bằng các lựa chọn sau:
- Quảng cáo trước video trong sự kiện phát trực tiếp DAI (Thử nghiệm beta)
- LiveStreamEvent.prerollsettings
Để truy xuất kết quả quyết định về quảng cáo chèn trước, hãy gửi yêu cầu đến ATM API.
Ví dụ sau đây đưa ra yêu cầu ATM cho quảng cáo trước video:
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"
Yêu cầu siêu dữ liệu về thời gian cho quảng cáo trong video
Để truy xuất siêu dữ liệu nhóm quảng cáo cho quảng cáo trong video, hãy làm theo các bước sau:
- Phân tích cú pháp tệp kê khai sự kiện phát trực tiếp để tìm các điểm đánh dấu quảng cáo có chứa thời gian và thời lượng cho từng điểm chèn quảng cáo chèn giữa.
- Gọi điểm cuối ATM API để yêu cầu thời lượng chính xác của nhóm quảng cáo và bảng thông tin. API này trả về một đối tượng JSON có kết quả quyết định của nhóm quảng cáo.
Ví dụ sau đây đưa ra yêu cầu ATM cho quảng cáo trong video:
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"
Nếu thành công, bạn sẽ thấy kết quả tương tự như đối tượng JSON sau:
{
"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
]
}
}
}
}
}
Ghép quảng cáo vào tệp kê khai nội dung
Các phần sau đây hướng dẫn bạn cách sửa đổi tệp kê khai sự kiện phát trực tiếp và thêm các phân đoạn quảng cáo.
Xác định các phân đoạn điểm chèn quảng cáo và chèn các điểm gián đoạn
Khi bạn xử lý từng tệp kê khai biến thể, hãy xác định thẻ EXT-X-CUE-IN và EXT-X-CUE-OUT trong luồng phát của bạn, cho biết thời điểm bắt đầu và kết thúc một khoảng thời gian chèn quảng cáo.
Thay thế thẻ EXT-X-CUE-IN và EXT-X-CUE-OUT bằng các phần tử EXT-X-DISCONTINUITY để trình phát video trên máy khách chuyển đổi giữa nội dung và quảng cáo.
Tệp kê khai ví dụ sau đây sẽ thay thế các thẻ EXT-X-CUE-IN và 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
Ví dụ sau đây cho thấy một tệp kê khai được thay thế:
#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
Các phân khúc quảng cáo DAI của Google không được mã hoá. Nếu nội dung của bạn được mã hoá, hãy xoá lớp mã hoá bằng cách chèn phần tử EXT-X-KEY:METHOD=NONE trước phân đoạn quảng cáo đầu tiên của mỗi điểm chèn quảng cáo. Khi điểm chèn quảng cáo kết thúc, hãy thêm lại lớp mã hoá bằng cách chèn một EXT-X-KEY thích hợp.
Theo dõi thời gian bắt đầu, thời lượng và chỉ mục của điểm chèn quảng cáo sắp tới.
Tạo URL phân khúc quảng cáo
Thay thế các phân đoạn nội dung giữa thẻ EXT-X-DISCONTINUITY bằng URL cho từng phân đoạn quảng cáo. Để xác định số lượng phân đoạn quảng cáo cần chèn, hãy sử dụng ads.segment_durations.values có trong phản hồi JSON từ ATM API.
Để quay lại nội dung trước khi nhóm quảng cáo hoàn tất, chẳng hạn như khi phát hiện thẻ EXT-X-CUE-IN, trình thao tác tệp kê khai của bạn phải thêm tham số d= vào URL của phân đoạn quảng cáo cuối cùng.
Tham số này rút ngắn đoạn để tránh ảnh hưởng đến dòng thời gian của trình phát video trên máy khách.
Ví dụ sau đây sẽ tập hợp một URL phân đoạn quảng cáo chèn trước vào tệp kê khai. Xin lưu ý rằng các phân đoạn quảng cáo sử dụng chỉ mục dựa trên 0:
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
Ví dụ sau đây sẽ tập hợp một URL phân đoạn quảng cáo chèn giữa vào tệp kê khai:
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
Ví dụ sau đây chèn các phân đoạn quảng cáo vào tệp kê khai:
#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
Tạo phân đoạn phương tiện chặn
Để lấp đầy khoảng trống giữa quảng cáo và nội dung, hãy chèn các đoạn phương tiện chặn.
Sử dụng mảng slates.segment_durations.values trong phản hồi JSON của ATM API để xác định thời lượng của từng phân đoạn bảng thông tin. Lặp lại chuỗi thời lượng phân đoạn khi cần để lấp đầy toàn bộ khoảng thời gian chèn quảng cáo.
Để quay lại nội dung trước khi nhóm quảng cáo hoàn tất (chẳng hạn như khi phát hiện thẻ EXT-X-CUE-IN), hãy thêm tham số d= vào URL của phân đoạn bảng thông báo cuối cùng. Tham số này rút ngắn đoạn để tránh ảnh hưởng đến dòng thời gian của trình phát video trên máy khách. Giá trị của tham số d= phải là một số nguyên, biểu thị thời lượng tính bằng mili giây để rút ngắn đoạn.
Ví dụ sau đây minh hoạ cách lắp ráp một phân đoạn bảng thông báo:
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 trong ví dụ này biểu thị số lần lặp lại của bảng điều khiển. Tham khảo khả năng tương thích và khả năng lưu vào bộ nhớ đệm của trình phát video trên máy khách để xác định xem có nên bắt đầu từ 0 và tăng số này cho mỗi vòng lặp của bảng quảng cáo hay giữ ở mức 0 cho tất cả các lần lặp.
Quản lý việc quay lại nội dung
Sau khi trình xử lý tệp kê khai chèn tất cả các phân đoạn từ nhóm quảng cáo, trình xử lý tệp kê khai phải chuyển về luồng nội dung. Để chuyển về luồng nội dung, hãy chọn một trong các phương thức sau. Mỗi phương thức đều yêu cầu một phân đoạn điều chỉnh cuối cùng để giữ cho dòng thời gian của luồng chính xác.
Fill and Re-align (Điền và căn chỉnh lại): Chèn các đoạn bảng hiệu và lặp lại bảng hiệu.
Điền thời lượng và chèn các phần tử EXT-X-DISCONTINUITY giữa mỗi lần lặp lại bảng thông tin. Đối với phân đoạn cuối cùng, hãy thêm tham số d= (tính bằng mili giây) để khớp với thời điểm bắt đầu nội dung.
Trả về ngay: Chèn một đoạn bảng điều khiển căn chỉnh lại bằng cách sử dụng tham số d= và theo sau là nội dung.
Trình phát video sẽ chuyển về nội dung mà không có dòng thời gian bị thay đổi.
Ví dụ sau đây tạo hiệu ứng chuyển đổi bằng cách lấp đầy phần còn lại của thời lượng điểm chèn quảng cáo bằng các phân đoạn phương tiện chặn.
#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
Trong phương pháp này, trình thao tác tệp kê khai của bạn sẽ lặp lại bảng thông báo khi cần và chỉ thêm tham số URL d= vào phân đoạn bảng thông báo cuối cùng. Quá trình này diễn ra chính xác theo thời gian bắt đầu dự kiến của nội dung cơ bản.
Ví dụ sau đây minh hoạ cách sử dụng một phân đoạn bảng hiệu duy nhất với tham số d= để giúp giữ cho dòng thời gian của trình phát chính xác khi bạn không lấp đầy toàn bộ phần còn lại của khoảng thời gian chèn quảng cáo bằng các bảng hiệu lặp lại.
#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
Không bắt buộc: Lên lịch điểm chèn quảng cáo
Để tăng tỷ lệ đáp ứng, hãy gửi Early Ad Break Notification (EABN) kèm theo thời lượng nhóm quảng cáo, các thông số nhắm mục tiêu tùy chỉnh và dữ liệu tín hiệu SCTE-35. Để biết thêm thông tin chi tiết, hãy xem phần Gửi thông báo sớm về điểm chèn quảng cáo.