Lưu và tải dấu trang luồng quảng cáo

Chọn nền tảng: HTML5 Android iOS tvOS Roku

Hướng dẫn này trình bày cách triển khai tính năng đánh dấu bằng IMA DAI SDK khi sử dụng tính năng Chèn quảng cáo động (DAI) cho luồng video theo yêu cầu (VOD). Điều này giả định rằng bạn đã triển khai DAI của IMA, chẳng hạn như cách triển khai được trình bày trong phần Bắt đầu.

Đánh dấu trang là gì?

Dấu trang là khả năng lưu và sau đó quay trở lại một điểm cụ thể trong luồng nội dung. Giả sử một người dùng xem năm phút nội dung, rời khỏi luồng video đó rồi quay lại xem sau. Tính năng đánh dấu lưu vị trí của người dùng trong luồng nên luồng có thể tiếp tục phát từ nơi đã dừng lại, mang đến trải nghiệm liền mạch cho người xem.

Tính năng đánh dấu trang DAI

Khi đánh dấu một luồng DAI, bạn phải ghi lại mã nhận dạng luồng và thời gian khi người dùng rời khỏi video. Khi người dùng quay lại, hãy yêu cầu lại luồng và tìm đến thời gian đã lưu. Vì mỗi phiên bản của luồng được yêu cầu có thể có các điểm chèn quảng cáo với thời lượng khác nhau, nên việc chỉ lưu thời gian phát trực tiếp sẽ không hiệu quả. Điều bạn thực sự muốn làm là tiếp tục từ cùng một mốc thời gian nội dung.

Các phương thức chuyển đổi để giải quyết vấn đề

IMA DAI SDK cung cấp một cặp phương thức để yêu cầu thời gian nội dung cho một thời gian phát trực tuyến nhất định và thời gian phát trực tuyến cho một thời gian nội dung nhất định. Bằng cách sử dụng các phương thức chuyển đổi này, bạn có thể lưu trữ thời gian nội dung đã đánh dấu và sau đó tìm đến thời gian phát trực tiếp tương ứng trong phiên bản mới của luồng phát. Sau đây là phương pháp tiếp cận, bao gồm cả đường liên kết đến một ứng dụng mẫu cho thấy quá trình triển khai tính năng đánh dấu trang đang hoạt động.

Lưu dấu trang

Lưu dấu trang khi Hoạt động bị tạm dừng.

- (void)viewWillAppear:(BOOL)animated {
  ...
  self.bookmarkTime =
      [self.streamManager contentTimeForStreamTime:CMTimeGetSeconds(
          self.playerViewController.player.currentTime)];
}

Đang tải dấu trang

Tải dấu trang khi yêu cầu lại một luồng phát. Đây là một phần của việc triển khai giao diện VideoStreamPlayer.

- (void)streamManagerIsPlaybackReady:(IMAStreamManager *)streamManager {
...
  if (self.bookmarkTime != 0) {
    NSTimeInterval streamTime = [self.streamManager
        streamTimeForContentTime:self.bookmarkTime];
    [self.playerViewController.player
        seekToTime:CMTimeMakeWithSeconds(streamTime, NSEC_PER_SEC)];
  }
}

Ứng dụng mẫu

Ứng dụng mẫu