คู่มือนี้แสดงวิธีใช้การสร้างบุ๊กมาร์กโดยใช้ IMA DAI SDK เมื่อใช้การแทรกโฆษณาแบบไดนามิก (DAI) สำหรับสตรีมวิดีโอตามคำขอ (VOD) ซึ่งจะถือว่าคุณมีการใช้งาน IMA DAI ที่ใช้งานได้ เช่น การใช้งานที่แสดงในส่วน เริ่มต้นใช้งาน
การสร้างบุ๊กมาร์กคืออะไร
การสร้างบุ๊กมาร์กเป็นความสามารถในการบันทึกจุดที่เฉพาะเจาะจงในสตรีมเนื้อหา แล้วกลับไปยังจุดนั้นได้ สมมติว่าผู้ใช้ดูเนื้อหา 5 นาที ออกจากสตรีมวิดีโอ แล้วกลับมาดูอีกครั้ง การสร้างบุ๊กมาร์กจะบันทึกตำแหน่งของผู้ใช้ในสตรีม ดังนั้นสตรีมจะกลับมาที่จุดที่ดูค้างไว้ แล้วให้ผู้ใช้ดูต่อได้อย่างต่อเนื่อง
การสร้างบุ๊กมาร์ก DAI กลไกภายใน
เมื่อสร้างบุ๊กมาร์กสตรีม DAI คุณต้องบันทึกรหัสสตรีมและเวลาที่ผู้ใช้ออกจากวิดีโอ เมื่อผู้ใช้กลับมา ให้ส่งคำขอสตรีมอีกครั้งและค้นหาเวลาที่บันทึกไว้ เนื่องจากสตรีมแต่ละอินสแตนซ์ที่ขออาจมีช่วงพักโฆษณาที่มีระยะเวลาแตกต่างกัน การบันทึกเวลาสตรีมเพียงอย่างเดียวจึงใช้ไม่ได้ สิ่งที่คุณต้องการทำจริงๆ คือการดูต่อจากเวลาเนื้อหา เดียวกัน
วิธีการแปลงช่วยคุณได้
IMA DAI SDK มีวิธีการ 2 อย่างในการขอเวลาเนื้อหา สำหรับเวลาสตรีม ที่กำหนด และเวลาสตรีม สำหรับเวลาเนื้อหา ที่กำหนด การใช้วิธีการแปลงเหล่านี้จะช่วยให้คุณจัดเก็บเวลาเนื้อหา ที่สร้างบุ๊กมาร์กไว้ แล้วค้นหาเวลาสตรีม ที่เกี่ยวข้องในอินสแตนซ์ใหม่ของสตรีมได้ นี่คือแนวทางปฏิบัติ ซึ่งรวมถึงลิงก์ไปยังแอปตัวอย่างที่แสดงการใช้งานการสร้างบุ๊กมาร์กที่ใช้งานได้
การบันทึกบุ๊กมาร์ก
บันทึกบุ๊กมาร์กเมื่อหยุดกิจกรรมชั่วคราว
Objective-C
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.contentPlayer pause];
// Ignore this if we're presenting a modal view (e.g. in-app clickthrough).
if ([self.navigationController.viewControllers indexOfObject:self] == NSNotFound) {
// Don't save bookmark if we're playing a live stream.
if (self.video.streamType != StreamTypeLive) {
NSTimeInterval contentTime = [self.streamManager
contentTimeForStreamTime:CMTimeGetSeconds(self.contentPlayer.currentTime)];
[self.delegate videoViewController:self didReportSavedTime:contentTime forVideo:self.video];
}
Swift
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
contentPlayer.pause()
if isMovingFromParent {
// Only save bookmark if we're playing a VOD stream.
if let vodStream = stream as? VODStream, let streamManager = streamManager {
let contentTime = streamManager.contentTime(
forStreamTime: contentPlayer.currentTime().seconds)
if contentTime.isFinite, contentTime > 0 {
delegate?.videoViewController(self, didReportBookmarkedTime: contentTime, for: vodStream)
}
}
if trackingContent {
removeContentPlayerObservers()
}
streamManager?.destroy()
adsLoader?.contentComplete()
streamManager = nil
adsLoader = nil
}
}
การโหลดบุ๊กมาร์ก
โหลดบุ๊กมาร์กเมื่อส่งคำขอสตรีมอีกครั้ง ซึ่งเป็นส่วนหนึ่งของการใช้อินเทอร์เฟซ VideoStreamPlayer
Objective-C
case kIMAAdEvent_STREAM_LOADED: {
if (self.video.streamType == StreamTypeVOD) {
[self addContentPlayerObservers];
if (self.video.savedTime > 0) {
NSTimeInterval streamTime =
[self.streamManager streamTimeForContentTime:self.video.savedTime];
[self.IMAVideoDisplay seekStreamToTime:streamTime];
self.video.savedTime = 0;
}
}
Swift
case .STREAM_LOADED:
guard let stream else { return }
addContentPlayerObservers()
if let vodStream = stream as? VODStream, vodStream.bookmarkTime > 0 {
bookmarkStreamTime = streamManager.streamTime(forContentTime: vodStream.bookmarkTime)
if let time = bookmarkStreamTime {
pendingBookmarkSeek = true
logMessage(
"STREAM_LOADED: Bookmark pending for contentTime: \(String(format: "%.2f", vodStream.bookmarkTime)) (streamTime: \(String(format: "%.2f", time)))"
)
vodStream.bookmarkTime = 0
}
}