Điểm chèn quảng cáo

Tổng quan

Web receiver SDK hỗ trợ riêng cho các điểm chèn quảng cáo và quảng cáo đồng hành trong một luồng phương tiện truyền thông cụ thể. Cung cấp các API để đặt vị trí quảng cáo, nguồn quảng cáo và hành vi của điểm chèn quảng cáo cũng như các đoạn video chèn quảng cáo có liên quan. Trong hướng dẫn này, Break là khoảng thời gian phát lại có chứa một hoặc nhiều quảng cáo hoặc đoạn quảng cáo đệm và mỗi quảng cáo hoặc đoạn quảng cáo đệm được gọi là BreakClip. Những điểm chèn quảng cáo này liên kết với nội dung nghe nhìn đang được tải hoặc phát.

Loại quảng cáo

Web receiver SDK hỗ trợ tính năng chèn quảng cáo phía máy khách (CSAI) và máy chủ chèn quảng cáo ghép (SSAI). Bạn có thể đặt quảng cáo Do khách hàng ghép theo cách thủ công bằng hoặc được trích xuất từ các tệp mẫu VASTVMAP. Quảng cáo được máy chủ ghép phải được chỉ định theo cách thủ công trước khi tải nội dung dưới dạng quảng cáo được nhúng hoặc động trong khi phát nội dung dưới dạng được nhúng mở rộng quảng cáo. Cách triển khai cho từng loại quảng cáo này được mô tả chi tiết bên dưới.

ghép thủ công bằng máy

Điểm chèn quảng cáo do ứng dụng ghép thủ công là một loại điểm chèn quảng cáo được ghép cùng nhau bởi ứng dụng khách và được ứng dụng chỉ định thủ công bằng cách sử dụng API SDK. Loại quảng cáo này không được nhúng vào luồng của nội dung chính. Chiến lược phát hành đĩa đơn BreakClip phải cung cấp contentId là URL trỏ đến nội dung quảng cáo, contentType trong đó mô tả định dạng của nội dung quảng cáo và title.

Break phải có isEmbeddedexpanded được đặt thành giá trị mặc định false. Chiến lược phát hành đĩa đơn position có thể đặt thành điểm chèn quảng cáo trước video, trong video hoặc sau video (xem thêm ở phần ngắt vị trí). Khi chuẩn bị quảng cáo phát lại, SDK Web receiver sẽ tạo một phiên bản trình phát khác để tải và phát nội dung quảng cáo. Các điểm chèn này cần có stitched timeline và phải thêm tĩnh (xem thêm trong chèn quảng cáo). Mẫu dưới đây trình bày một cách triển khai quảng cáo được ghép bằng ứng dụng thủ công:

// Create the BreakClip.
let clipClient = new cast.framework.messages.BreakClip('bc_client');
clipClient.title = 'The Ad Title to be displayed during playback';
clipClient.contentId = 'https://example.com/ad.m3u8';
clipClient.contentType = 'application/vnd.apple.mpegurl';

// Optional: Used when HLS ad container formats differ from the main content's.
clipClient.hlsSegmentFormat = cast.framework.messages.HlsSegmentFormat.FMP4;

// Create the Break using the BreakClip id above.
let breakPostrollClient = new cast.framework.messages.Break(
    'break_postroll_client', ['bc_client'], -1);
breakPostrollClient.isEmbedded = false; // Optional: default is false.
breakPostrollClient.expanded = false; // Optional: default is false.

VAST

SDK bộ thu web hỗ trợ việc thêm VAST tiêu chuẩn IAB (Phân phát quảng cáo dạng video) Quảng cáo mẫu). Khi được cung cấp, mẫu XML sẽ được phân tích cú pháp để tạo đoạn video chèn được ghép bằng máy khách tiếp theo khi vào điểm chèn quảng cáo.

Để tạo quảng cáo VAST, ứng dụng nhận phải tạo một VastAdsRequest và chỉ định mã đó trong BreakClip vastAdsRequest thuộc tính này. Đối tượng VastAdsRequest phải có adsResponse (a chuỗi đại diện của chính mẫu XML) hoặc adTagUrl (URL được xác định là thuộc tính mẫu XML được lưu trữ. Nếu URL được chỉ định, SDK sẽ xử lý việc tìm nạp mẫu. Break đóng gói tuân theo cho quảng cáo kết hợp với ứng dụng. Bạn có thể thêm các quảng cáo này cùng với quảng cáo được ghép thủ công bằng máy khách trong cùng một điểm chèn hoặc trong những điểm ngắt riêng đối với cùng một đoạn nội dung. Mẫu dưới đây trình bày cách triển khai cơ bản của một VAST quảng cáo:

// Create the VastAdsRequest.
let vastTemplate = new cast.framework.messages.VastAdsRequest();
vastTemplate.adTagUrl = 'https://example.com/ads.xml'

// Create the BreakClip.
let clipVast = new cast.framework.messages.BreakClip('bc_vast');
clipVast.vastAdsRequest = vastTemplate;

// Create the Break using the BreakClip id above.
let breakPostrollVast = new cast.framework.messages.Break(
    'break_postroll_vast', ['bc_vast'], -1);
breakPostrollVast.isEmbedded = false; // Optional: default is false.
breakPostrollVast.expanded = false; // Optional: default is false.

Khi nhập một Break chứa một VAST BreakClip, Trình thu nhận web SDK sẽ tìm nạp (không bắt buộc) rồi phân tích cú pháp mẫu. Trong khi phân tích cú pháp, SDK sẽ tạo một BreakClip mới rồi điền các giá trị được trích xuất từ đó vào đó mẫu như contentId, contentType, title, duration, whenSkippableclickThroughUrl. id cho đoạn chèn quảng cáo đã tạo là đặt thành GENERATED:N, trong đó N là một số nguyên tăng lên 1 cho mỗi Đoạn video chèn VAST được tạo bắt đầu từ 0. Sau đó, quảng cáo được tạo sẽ được thêm vào mảng BreakClip. id của mỗi đoạn ngắt VAST trong Break hiện tại là sau đó được thay thế bằng id của đoạn ngắt được tạo tương ứng. Đoạn mã dưới đây minh hoạ những thay đổi trong MEDIA_STATUS các thông điệp liên quan đến quảng cáo trước và sau khi vào khoảng nghỉ.

Thông tin về BreakBreakClip trước khi nghỉ giải lao bằng quảng cáo VAST.

"breaks": [
  {
    "id": "break_postroll_vast",
    "breakClipIds": [
      "bc_vast"
    ],
    "position": 0,
    "isWatched": false
  }
],
"breakClips": [
  {
    "id": "bc_vast"
  }
]

Thông tin về BreakBreakClip sau khi nghỉ giải lao bằng quảng cáo VAST.

"breaks": [
  {
    "id": "break_postroll_vast",
    "breakClipIds": [
      "GENERATED:0"
    ],
    "position": 0,
    "isWatched": true
  }
],
"breakClips": [
  {
    "id": "bc_vast"
  },
  {
    "id": "GENERATED:0",
    "contentId": "https://example.com/break-clip-1.mpd",
    "contentType": "application/dash+xml",
    "title": "Ad Title Extracted from Template",
    "duration": 10,
    "whenSkippable": 5,
    "clickThroughUrl": "https://example.com/ad-target"
  }
]

VMAP (Danh sách phát video nhiều quảng cáo)

SDK bộ thu web hỗ trợ VMAP của IAB (Danh sách phát video nhiều quảng cáo) chuẩn. Khi VMAP được cung cấp, SDK Web receiver sẽ phân tích cú pháp VMAP phản hồi và tạo đối tượng Break được ghép bằng ứng dụng cho bất kỳ <AdBreak> nào trong câu trả lời. Thao tác này cũng sẽ tạo BreakClips thích hợp với một đối tượng vastAdsRequest cho mỗi mục <AdSource> được cung cấp trong VMAP. Người nhận bật VMAP để chèn quảng cáo vào nội dung của bạn, ứng dụng phải tạo một VastAdsRequest và gán đối tượng đó cho vmapAdsRequest thuộc tính của MediaInformation trong LoadRequestData. Những quảng cáo này phải được chèn tĩnh (xem thêm trong chèn quảng cáo). Dưới đây là đoạn trích trình bày rõ tạo yêu cầu VMAP.

// Create the VastAdsRequest.
let vastTemplate = new cast.framework.messages.VastAdsRequest();
vastTemplate.adTagUrl = 'https://example.com/vmap.xml'

// Add it to the MediaInformation of the LoadRequest.
loadRequestData.media.vmapAdsRequest = vastTemplate;

đã nhúng

Điểm chèn quảng cáo được nhúng là một loại điểm chèn quảng cáo được ghép phía máy chủ vào luồng nội dung chính. Thời lượng của Break bị trừ đi dựa trên thời lượng của nội dung chính khi tính thời lượng của nội dung nghe nhìn.

BreakClip phải cung cấp duration của nội dung quảng cáo và title. Break phải có isEmbedded được đặt thành trueexpanded được đặt thành false. Chiến lược phát hành đĩa đơn position có thể đặt thành điểm chèn quảng cáo trước video hoặc trong video. Các điểm chèn quảng cáo sau video được hỗ trợ với giá trị position chính xác dương. Xem thêm về vấn đề này trong định vị ngắt. Khi quảng cáo được kích hoạt để phát, SDK Bộ thu web sẽ tiếp tục phát luồng dưới dạng các phân đoạn quảng cáo được nhúng trong đó. Không có cơ chế tải bổ sung nào cho loại quảng cáo này. Siêu dữ liệu quảng cáo có liên quan sẽ hiển thị cho người dùng khi con trỏ vị trí nằm trong thời gian chèn. Bạn phải thêm embedded timeline vào các đoạn nghỉ này tĩnh (xem thêm trong phần chèn quảng cáo). Chiến lược phát hành đĩa đơn mẫu bên dưới cho biết cách triển khai cơ bản của một quảng cáo embedded.

// Create the BreakClip.
let clipEmbedded = new cast.framework.messages.BreakClip('bc_embedded');
clipEmbedded.title = 'The Ad Title to be displayed during playback';
clipEmbedded.duration = 15;

// Create the Break using the BreakClip id above.
let breakPrerollEmbedded = new cast.framework.messages.Break(
    'break_preroll_embedded', ['bc_embedded'], 0);
breakPrerollEmbedded.isEmbedded = true;
breakPrerollEmbedded.expanded = false; // Optional: default is false.

đã nhúng mở rộng

Điểm chèn quảng cáo mở rộng được nhúng là một loại điểm chèn quảng cáo được ghép với máy chủ vào luồng nội dung chính. Thời lượng của Break được bao gồm trong thời lượng của nội dung chính khi tính thời gian của nội dung nghe nhìn.

BreakClip phải cung cấp duration của nội dung quảng cáo và title. Break phải có isEmbedded được đặt thành trueexpanded được đặt thành true. Chiến lược phát hành đĩa đơn position có thể đặt thành điểm chèn quảng cáo trước video hoặc trong video. Các điểm chèn quảng cáo sau video được hỗ trợ với giá trị position dương. Xem thêm về vấn đề này trong định vị ngắt. Khi quảng cáo được kích hoạt để phát, SDK Bộ thu web sẽ tiếp tục phát luồng dưới dạng các phân đoạn quảng cáo được nhúng trong đó. Không có cơ chế tải bổ sung nào cho loại quảng cáo này. Siêu dữ liệu quảng cáo có liên quan sẽ hiển thị cho người dùng khi con trỏ vị trí nằm trong thời gian chèn. Những điểm chèn này cần có embedded timeline và có thể được thêm vào theo cách tĩnh hoặc động (xem thêm trong chèn quảng cáo). Mẫu dưới đây trình bày một cách triển khai một quảng cáo embedded expanded:

// Create the BreakClip.
let clipEmbeddedExpanded =
    new cast.framework.messages.BreakClip('bc_embedded_expanded');
clipEmbeddedExpanded.title = 'The Ad Title to be displayed during playback';
clipEmbeddedExpanded.duration = 15;

// Create the Break using the BreakClip id above.
let breakPrerollEmbeddedExpanded = new cast.framework.messages.Break(
    'break_preroll_embedded_expanded', ['bc_embedded_expanded'], 0);
breakPrerollEmbeddedExpanded.isEmbedded = true;
breakPrerollEmbeddedExpanded.expanded = true;

Các loại dòng thời gian của trình phát

Khi tạo một phiên bản trình phát, SDK Web receiver sẽ chọn một loại dòng thời gian để hỗ trợ phát quảng cáo trong khi phát lại nội dung. Mỗi dòng thời gian sẽ bật một số quảng cáo kiểu ngắt cần thêm. Loại dòng thời gian được xác định theo loại quảng cáo xuất hiện trong thời gian tải trong MediaInformation của LoadRequestData. Nếu có điểm chèn quảng cáo được nhúng, thì dòng thời gian embedded sẽ được chọn. Nếu Có điểm chèn quảng cáo do ứng dụng ghép, dòng thời gian stitched được chọn. Trong trường hợp không có quảng cáo nào, SDK mặc định sẽ sử dụng embedded dòng thời gian. Sau khi chọn dòng thời gian, bạn không thể thay đổi dòng thời gian hiện tại mục nội dung nghe nhìn. Bảng dưới đây mô tả chi tiết về từng tiến trình.

Loại tiến trình Mô tả
tiến trình được nhúng Giá trị thời gian của nội dung truyền thông hỗ trợ quảng cáo được nhúng vào nội dung chính (điểm chèn quảng cáo được nhúngđược nhúng mở rộng). Khi có một điểm chèn quảng cáo không được mở rộng, thì thời lượng trừ vào tổng thời lượng của nội dung. Mặt khác, khi quảng cáo mở rộng có điểm chèn, thì thời gian được coi là một trong nội dung chính.
tiến trình được ghép Một giá trị thời gian của nội dung truyền thông hỗ trợ quảng cáo có nguồn gốc từ các tệp nội dung nghe nhìn bên ngoài (được ghép bằng ứng dụng thủ công, VASTVMAP điểm chèn quảng cáo). Khi thêm, thời lượng của điểm chèn quảng cáo là không nằm trong thời lượng của nội dung chính.

Hình 1 đến 3 dưới đây minh hoạ một số nội dung có nhiều loại quảng cáo và các giá trị dòng thời gian tương ứng. Nội dung được định cấu hình bằng cách chèn trước video có chứa hai đoạn quảng cáo và điểm chèn trong videosau video có chứa đoạn video chèn quảng cáo. Thời gian theo đồng hồ treo tường kể từ khi bắt đầu phát nội dung, thời gian phát nội dung đa phương tiện của nội dung chính và thời gian quảng cáo hiện là đoạn ngắt phát được căn chỉnh bên dưới mỗi hình.

Dòng thời gian của quảng cáo được ghép từ ứng dụng
Hình 1: Dòng thời gian thể hiện một số nội dung và 3 điểm chèn quảng cáo được ghép với ứng dụng.


Tiến trình của quảng cáo nhúng được ghép với máy chủ
Hình 2: Dòng thời gian thể hiện một số nội dung và 3 điểm chèn quảng cáo được ghép bởi máy chủ.


Tiến trình của quảng cáo mở rộng được nhúng được ghép với máy chủ
Hình 3: Dòng thời gian thể hiện một số nội dung và 3 điểm chèn quảng cáo mở rộng được ghép bởi máy chủ của nội dung đó.

Định vị điểm chèn

Web receiver SDK cho phép nhà phát triển chỉ định vị trí chèn quảng cáo bằng cách đặt giá trị position của Break. Giá trị này tương ứng với thời gian phát nội dung đa phương tiện của nội dung chính và có thể dùng để tạo điểm chèn quảng cáo pre-roll, mid-rollpost-roll. Các thuộc tính này được xác định như sau:

Vị trí ngắt Mô tả
trước video Một điểm chèn quảng cáo được phát trước nội dung chính. Đây là được biểu thị bằng cách đặt breakPosition thành 0
trong video Một điểm chèn quảng cáo được phát giữa nội dung. Điều này được biểu thị bằng đặt breakPosition thành thời gian mà điểm chèn quảng cáo điểm bắt đầu lớn hơn điểm bắt đầu của nội dung chính và thời gian kết thúc của điểm chèn ít hơn thời gian kết thúc nội dung chính bất cứ lúc nào.
sau video Một điểm chèn quảng cáo được phát sau nội dung chính. Đây là được biểu thị bằng cách đặt breakPosition thành -1 cho tiến trình ghép. Đối với được nhúng dòng thời gian cho breakPosition phải đặt thời lượng của nội dung chính trừ đi thời lượng của điểm chèn quảng cáo. Không được hỗ trợ cho nội dung phát trực tiếp.

Ma trận tương tác

Bảng 1 cung cấp thông tin tổng quan về các loại quảng cáo và khả năng tương thích với các tính năng liên quan đến quảng cáo.

Bảng 1: Ma trận khả năng tương tác của quảng cáo
Hỗ trợ tính năng quảng cáo do máy khách ghép thủ công VAST VMAP (Danh sách phát video nhiều quảng cáo) quảng cáo được nhúng quảng cáo mở rộng được nhúng
tương thích với VAST ghép thủ công bằng máy Không áp dụng đã nhúng mở rộng đã nhúng
dòng thời gian đã ghép đã ghép đã ghép đã nhúng đã nhúng
chèn quảng cáo tĩnh tĩnh tĩnh tĩnh tĩnh, động
gỡ bỏ quảng cáo
quảng cáo trước video
quảng cáo trong video
quảng cáo sau video
bỏ qua quảng cáo
phá vỡ tìm kiếm chặn
phá vỡ trình chặn tải đoạn video

Sự kiện

Khi các sự kiện ngắt phím xảy ra, SDK truyền sẽ gửi các sự kiện thuộc loại BreaksEvent. Ứng dụng nhận có thể đăng ký nhận thông báo bằng PlayerManager addEventListener API.

Những sự kiện này có thể được dùng để phân tích và theo dõi lượt phát quảng cáo. Khi VMAP (Danh sách quảng cáo dạng video nhiều quảng cáo) và quảng cáo VAST (Mẫu phân phát quảng cáo dạng video) là thì mọi sự kiện theo dõi chuẩn được cung cấp trong câu trả lời sẽ được tự động do SDK gửi đi.

Loại sự kiện được liệt kê trong Bảng 2 cùng với nội dung mô tả chi tiết về khi chúng được kích hoạt.

Vòng đời của sự kiện điểm chèn
Hình 4: Vòng đời sự kiện ngắt.
Bảng 2: Các sự kiện chèn quảng cáo và nội dung mô tả về các sự kiện đó.
Sự kiện ngắt Mô tả
BREAK_STARTED Được kích hoạt khi thời gian phát nội dung đa phương tiện hiện tại của nội dung chính bằng với position của một giờ nghỉ giải lao chưa xem.
BREAK_CLIP_LOADING Chỉ được kích hoạt khi đoạn ngắt dòng thời gian ghép bắt đầu tải.
BREAK_CLIP_STARTED Được kích hoạt khi đoạn ngắt bắt đầu phát.
BREAK_CLIP_ENDED Được kích hoạt khi đoạn chèn quảng cáo kết thúc. Chiến lược phát hành đĩa đơn endedReason sẽ được điền sẵn cho các trường hợp sau:
  • Một đoạn chèn theo dòng thời gian ghép được phát toàn bộ.
  • Một đoạn video chèn theo dòng thời gian ghép sẽ chuyển đổi thành một đoạn video chèn quảng cáo khác.
  • Mọi đoạn chèn quảng cáo sẽ bị bỏ qua.
  • Đoạn quảng cáo cuối cùng được phát toàn bộ trong một đoạn quảng cáo nhúng cuối video.
  • Đã xảy ra lỗi.
BREAK_ENDED Được kích hoạt khi đoạn chèn quảng cáo cuối cùng trong một điểm chèn kết thúc.

Chèn quảng cáo

SDK truyền cho phép ứng dụng chèn và xoá quảng cáo tại nhiều thời điểm của một phiên truyền. Có hai loại chèn quảng cáo là tĩnhđộng. Để chèn quảng cáo tĩnh, bạn phải chỉ định quảng cáo trong LoadRequestData trước khi tạo trình phát. Tính năng chèn quảng cáo động sử dụng BreakManager addBreak API để chèn điểm chèn vào nội dung đã tải. Từng kiểu chèn tương thích với một số loại quảng cáo nhất định. Khả năng tương thích thông tin tổng quan được cung cấp trong ma trận khả năng tương tác.

Chèn quảng cáo tĩnh

Chèn quảng cáo tĩnh được đặc trưng bằng cách thêm siêu dữ liệu quảng cáo có liên quan trước đến việc tạo trình phát. Thông tin này có trong MediaInformation trong số LoadRequestData. Ví dụ: bạn có thể đặt giá trị này trong tệp yêu cầu tải ban đầu hoặc có thể được chèn bởi ứng dụng Trình nhận web bằng cách chặn yêu cầu LOAD. Sau khi trả về LoadRequestData Web receiver SDK để xử lý, trình phát sẽ được tạo. Xem thêm trên tải nội dung nghe nhìn. Mẫu bên dưới hiển thị một quảng cáo được ghép bằng ứng dụng thủ công đang được thêm vào yêu cầu LOAD chặn.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();

playerManager.setMessageInterceptor(
    cast.framework.messages.MessageType.LOAD, loadRequestData => {

  // Create the BreakClip.
  let clipClient = new cast.framework.messages.BreakClip('bc_client');
  clipClient.title = 'The Ad Title to be displayed during playback';
  clipClient.contentId = 'https://example.com/ad.mp4';
  clipClient.contentType = 'video/mp4';

  // Create the Break using the BreakClip id above.
  let breakPostrollClient = new cast.framework.messages.Break(
      'break_postroll_client', ['bc_client'], -1);

  // Set the ad information in the load request data.
  let media = loadRequestData.media;
  media.breakClips = [clipClient];
  media.breaks = [breakPostrollClient];

  return loadRequestData;
});

Chèn quảng cáo động

Đặc điểm của tính năng chèn quảng cáo động là đặt điểm chèn quảng cáo trong nội dung video. Bạn có thể thực hiện việc này bằng cách lấy một thực thể của BreakManager và gọi thời gian addBreak API. Hàm này cần tối thiểu hai tham số, được nhúng đã mở rộng Break và một mảng BreakClip. Thuộc tính thứ ba (không bắt buộc) được đưa vào để buộc gửi các thay đổi tới người gửi được kết nối thông qua thông báo truyền tin MediaStatus khi đặt thành true. Thời gian thêm điểm chèn và chèn đoạn video, thì các mã nhận dạng tương ứng phải là duy nhất. Các quảng cáo này chỉ có thể thêm sau khi tạo trình phát. Web receiver SDK kích hoạt thời gian PLAYER_LOADING sự kiện sau khi tạo người chơi. Hãy xem mẫu dưới đây hiển thị cách sử dụng trong trình xử lý sự kiện phản hồi các thay đổi trong siêu dữ liệu ID3 của một luồng và tạo các đối tượng BreakBreakClip để chèn vào dòng thời gian.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

playerManager.addEventListener(cast.framework.events.EventType.ID3, (event) => {

  // Create the BreakClip.
  let clipEmbeddedExpanded = parseBreakClipFromData(event.segmentData);
  let breakEmbeddedExpanded = parseExpandedBreakFromData(event.segmentData);

  // Add the break and break clip.
  breakManager.addBreak(breakEmbeddedExpanded, [clipEmbeddedExpanded]);
});

Xóa quảng cáo động

Để xoá điểm chèn quảng cáo động, ứng dụng cần gọi removeBreakById trong khi phát. Hàm này lấy một giá trị nhận dạng chuỗi của điểm chèn làm giá trị nhận dạng đã bị xóa khỏi dòng thời gian. breakId được chỉ định phải trỏ tới một được nhúng đã mở rộng. Nếu phát hiện thấy bất kỳ loại điểm chèn quảng cáo nào khác, thì điểm chèn này sẽ vẫn có trong tiến trình. Hãy xem mẫu dưới đây để biết cách loại bỏ điểm chèn quảng cáo.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

breakManager.removeBreakById('break_midroll_embedded_expanded');

Hành vi nghỉ giải lao

SDK xác định hành vi mặc định khi người chơi nhập và rời khỏi đoạn nghỉ giải lao đồng thời cung cấp cách tuỳ chỉnh thêm bằng cách sử dụng một số API được cung cấp inch BreakManager.

Hành vi ngắt mặc định

Khi Break được nhập thông qua chế độ phát thông thường hoặc bằng cách tua qua Break, SDK sẽ đánh giá xem người dùng đã nhìn thấy mã đó hay chưa bằng cách kiểm tra thời gian isWatched thuộc tính này. Khi được tạo, giá trị mặc định của điểm chèn cho thuộc tính này là false. Nếu thuộc tính là true, điểm chèn quảng cáo sẽ không được phát khi vào cửa và chế độ chính nội dung sẽ tiếp tục phát. Nếu giá trị là false, điểm chèn sẽ là được phát khi được nhập.

Khi tìm kiếm các điểm ngắt trong quá khứ, phương thức triển khai mặc định sẽ lấy tất cả Break các mục có position nằm giữa thao tác tìm kiếm seekFromseekTo giá trị. Trong danh sách điểm chèn này, SDK sẽ phát Breakposition gần nhất với giá trị seekTo và có thuộc tính isWatched được đặt thành false. Sau đó, thuộc tính isWatched của điểm chèn đó sẽ được đặt thành true và trình phát sẽ bắt đầu phát các đoạn video chèn quảng cáo. Sau khi xem giờ nghỉ, nội dung chính sẽ tiếp tục phát từ vị trí seekTo. Nếu không có điểm chèn quảng cáo sẽ không được phát và nội dung chính sẽ tiếp tục đang phát ở vị trí seekTo.

Trong khi phát lại quảng cáo, SDK sẽ truyền mọi thông tin cập nhật liên quan đến thiết bị đã kết nối của người gửi trong MediaStatus. Các ứng dụng này sẽ sử dụng thông báo truyền tin để cập nhật giao diện người dùng cho quảng cáo bằng cách đọc thời gian breakStatus thuộc tính này. Thuộc tính này chỉ được xác định trong thời gian phát điểm chèn quảng cáo.

Ứng dụng của dịch vụ nhận cũng có thể truy vấn trực tiếp thông tin liên quan đến vị trí của con trỏ vị trí theo thời gian hiện tại của BreakClip hiển thị bằng cách gọi PlayerManager getBreakClipCurrentTimeSec. Tương tự, các ứng dụng có thể truy vấn khoảng thời gian của BreakClip hiện tại bằng cách đang gọi getBreakClipDurationSec.

Hành vi ngắt tuỳ chỉnh

Hành vi mặc định Bạn có thể điều chỉnh đoạn video chèn quảng cáo bằng cách sử dụng setBreakClipLoadInterceptorsetBreakSeekInterceptor được cung cấp trong BreakManager.

Chặn tìm kiếm ngắt

Trình chặn tìm điểm ngắt cho phép ứng dụng kiểm soát hành vi tua quá nhiều điểm chèn quảng cáo. Hàm này được kích hoạt khi có yêu cầu thực hiện một thao tác tìm kiếm tua đi hoặc tua lại trên một hoặc nhiều điểm ngắt. Khi được gọi, BreakSeekData được truyền dưới dạng tham số vào hàm callback. Đối tượng BreakSeekData chứa một mảng Break các đối tượng có thuộc tính position được đặt thành một số giữa giá trị hiện tại thời gian trên đầu phát được xác định là seekFrom và thời gian đích tìm kiếm seekTo

Trình chặn này cho phép các đối tượng Break trong các điểm ngắt tương ứng được sửa đổi. Khi được triển khai, trình chặn tìm kiếm ngắt phải chỉ định quảng cáo nào ngắt để phát bằng cách trả về một đối tượng BreakSeekData được sửa đổi (không bắt buộc). Chiến lược phát hành đĩa đơn người chơi sẽ tiếp tục chơi tất cả các điểm chèn quảng cáo có trong giá trị trả về. Nếu một giá trị là null hoặc không có giá trị nào được trả về từ trình chặn tìm kiếm điểm chèn, điểm chèn là đã bỏ qua.

Xem mẫu bên dưới để biết cách triển khai đơn giản của trình chặn ghi đè hành vi mặc định để xem tất cả các điểm chèn quảng cáo được tìm kiếm bằng ngoại lệ với những điểm chèn quảng cáo đã xem.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

breakManager.setBreakSeekInterceptor((breakSeekData) => {

  // Filter the breaks array by removing watched breaks.
  const unwatchedBreaks =
      breakSeekData.breaks.filter(adBreak => !adBreak.isWatched);
  breakSeekData.breaks = unwatchedBreaks;

  return breakSeekData;
});

Chặn trình chặn tải đoạn video

Bằng cách sử dụng trình chặn tải đoạn ngắt, bạn có thể sửa đổi đối tượng BreakClip trước khi bắt đầu phát.

Trình chặn tải đoạn ngắt chỉ được gọi cho dấu ngắt dòng thời gian ghép và có thể thiết lập bằng setBreakClipLoadInterceptor. Trước khi nhập Break, thiết bị chặn này được gọi một lần cho mỗi cá nhân BreakClip được xác định trong điểm chèn đó. SDK truyền phiên bản gốc BreakClip làm tham số của hàm callback. Sau đó, ứng dụng này có thể sửa đổi BreakClip này rồi trả về để SDK có thể tìm nạp và hiển thị điểm chèn với cấu hình đã cập nhật. Nếu giá trị trả về là null hoặc không có giá trị nào được trả về, thì điểm chèn đoạn video bị bỏ qua.

Hãy xem ví dụ dưới đây về cách sửa đổi contentUrl của các đoạn chèn quảng cáo bằng một hàm hiệu dụng sẽ gọi getUrlFromClipId, trong đó id của BreakClip được ánh xạ tới một URL.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

breakManager.setBreakClipLoadInterceptor(
    (breakClip, breakClipLoadInterceptorContext) => {

  // Obtains the URL of a break clip id from a function call.
  breakClip.contentUrl = getUrlFromClipId(breakClip.id);

  return breakClip;
});

Bỏ qua quảng cáo

Web receiver SDK cung cấp các API để bỏ qua điểm chèn quảng cáo và các đoạn chèn quảng cáo riêng lẻ trong một điểm chèn quảng cáo. SDK cũng cho phép người dùng tuỳ ý bỏ qua các đoạn chèn quảng cáo theo tương tác với các ứng dụng của người gửi hoặc thiết bị hiển thị thông minh.

Đoạn video chèn quảng cáo mà người dùng có thể bỏ qua

Việc đặt các đoạn chèn quảng cáo thành có thể bỏ qua sẽ cho phép người dùng tương tác với người gửi đã kết nối ứng dụng và thiết bị hiển thị thông minh để tuỳ ý bỏ qua phần còn lại của đoạn video chèn quảng cáo hiện đang phát. Thiết lập whenSkippable thành một số giây không âm sẽ bật tính năng này cho Đối tượng BreakClip. Trình phát sẽ coi đoạn video chèn quảng cáo đó có thể bỏ qua sau khi đoạn video chèn quảng cáo đã phát trong số giây đó. Đang đặt giá trị này thành 0 cho phép người dùng bỏ qua đoạn chèn quảng cáo ngay lập tức.

// Create the BreakClip.
let clip = new cast.framework.messages.BreakClip('bc');
clip.title = 'The Ad Title to be displayed during playback';
clip.whenSkippable = 10; // Users can skip the clip after 10 seconds of playback.

Thông tin này có thể được đặt trong yêu cầu tải ban đầu của người gửi hoặc trong nhận. Khi bị bỏ qua, một đoạn chèn quảng cáo trong dòng thời gian ghép sẽ dừng phát đoạn chèn quảng cáo hiện tại. Người chơi sẽ tải ngắt đoạn nếu trình bày hoặc tải nội dung chính. Khi bạn bỏ qua, một đoạn chèn quảng cáo trong Điểm chèn quảng cáo theo dòng thời gian được nhúng sẽ tìm đến cuối đoạn chèn quảng cáo và tiếp tục phát luồng vào thời điểm đó.

Bỏ qua quảng cáo theo phương thức lập trình

Quảng cáo cũng có thể tự động bị bỏ qua mà không cần người dùng phải tương tác.

Để bỏ qua toàn bộ khoảng thời gian nghỉ phát, ứng dụng phải đặt giá trị isWatched từ Break đến true. Bạn có thể thực hiện việc này bất cứ lúc nào trong khi tải trình tự hoặc nội dung. Thuộc tính isWatched được đánh giá bằng trình phát khi gặp position của một điểm chèn quảng cáo trong thời gian hiện tại của nội dung chính. Tại điểm đó, người chơi sẽ xác định xem có nên nhập điểm nghỉ hay không. Xem mẫu bên dưới, vòng lặp thông qua tất cả các điểm chèn và sửa đổi khi trình phát đang tải.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

playerManager.addEventListener(cast.framework.events.EventType.PLAYER_LOADING,
    (event) => {

  // Obtain the breaks and iterate through each item to skip all ad breaks.
  let breaks = breakManager.getBreaks();
  breaks.forEach((brk) => {
    brk.isWatched = true;
  });
});

Để bỏ qua một đoạn video chèn cụ thể theo phương thức lập trình, Bạn nên sử dụng trình chặn tải đoạn quảng cáo ngắt. Theo trả về null hoặc không trả về một giá trị trong hàm callback, sẽ cắt điểm chèn đó sẽ bị bỏ qua.

const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
const breakManager = playerManager.getBreakManager();

breakManager.setBreakClipLoadInterceptor(
      (breakClip, breakClipLoadInterceptorContext) => {
  return null;
});