Khoá cài

Là nhà xuất bản video, bạn nên ngăn người xem tìm kiếm quảng cáo trong video. Khi người dùng tìm kiếm một điểm chèn quảng cáo, bạn có thể đưa họ trở lại điểm bắt đầu điểm chèn quảng cáo đó và đưa họ về vị trí tìm kiếm sau khi điểm chèn quảng cáo đó hoàn tất. Tính năng này được gọi là "quay lại".

Ví dụ: hãy xem sơ đồ dưới đây. Khán giả của bạn đang xem video và quyết định tua từ mốc 5 phút đến mốc 15 phút. Tuy nhiên, sẽ có một điểm chèn quảng cáo ở 10 phút mà bạn muốn họ xem trước khi có thể xem nội dung sau quảng cáo đó:

Để hiển thị điểm chèn quảng cáo này, hãy làm theo các bước sau:

  1. Kiểm tra xem người dùng có chạy một cụm từ tìm kiếm đã vượt qua một điểm chèn quảng cáo chưa xem hay không. Nếu có, hãy đưa họ trở lại điểm chèn quảng cáo đó.
  2. Sau khi kết thúc điểm chèn quảng cáo, hãy đưa chúng trở về cấu trúc tìm kiếm ban đầu.

Ở dạng sơ đồ, giao diện sẽ có dạng như sau:

Sau đây là cách triển khai quy trình công việc này trong SDK IMA HTML5, như thực hiện trong Ví dụ nâng cao.

Ngăn video tìm kiếm để lại điểm chèn quảng cáo mà chưa xem

Kiểm tra xem người dùng có chạy một cụm từ tìm kiếm đã vượt qua một điểm chèn quảng cáo chưa xem hay không. Nếu có, hãy đưa họ trở lại điểm chèn quảng cáo đó. Trong SDK HTML5, hãy đặt trình nghe sự kiện trên sự kiện seeked của trình phát nội dung để kích hoạt onSeekEnd(). Phương thức đó (được trình bày dưới đây) kiểm tra điểm dừng trước thời gian tìm kiếm của người dùng. Nếu chưa phát, hãy tìm điểm bắt đầu điểm chèn quảng cáo thay vì điểm tìm kiếm mong muốn ban đầu và lưu điểm tìm kiếm mong muốn đó trong snapForwardTime.

function onSeekEnd() {
  if (isLiveStream) { return; }
  if (isSnapback) {
    isSnapback = false;
    return;
  }
  var currentTime = videoElement.currentTime;
  var previousCuePoint =
      streamManager.previousCuePointForStreamTime(currentTime);
  if (previousCuePoint && !previousCuePoint.played) {
    isSnapback = true;
    snapForwardTime = currentTime;
    videoElement.currentTime = previousCuePoint.start;
}

Đưa người dùng trở lại nút tua ban đầu

Bây giờ, khi bạn nhận được sự kiện AD_BREAK_ENDED, hãy kiểm tra xem snapForwardTime có được đặt hay không. Nếu có, hãy đưa người dùng đến điểm đó trong luồng, vì điểm chèn quảng cáo họ vừa xem là kết quả của ảnh chụp nhanh:

function onAdBreakEnded(e) {
  videoElement.controls = true;
  clickElement.style.display = 'none';
  adUiDiv.style.display = 'none';
  if (snapForwardTime && snapForwardTime > videoElement.currentTime) {
    videoElement.currentTime = snapForwardTime;
    snapForwardTime = null;
  }
}