คู่มือนี้จะแสดงวิธีใช้การบุ๊กมาร์กโดยใช้ IMA DAI SDK เมื่อใช้การแทรกโฆษณาแบบไดนามิก (DAI) สำหรับสตรีมวิดีโอตามคำขอ (VOD) โดยสมมติว่ามีการใช้งาน IMA DAI ที่ใช้งานได้ตามที่แสดงใน เริ่มต้นใช้งาน
การบุ๊กมาร์กคืออะไร
การสร้างบุ๊กมาร์กเป็นความสามารถในการบันทึกจุดที่เฉพาะเจาะจงในสตรีมเนื้อหา สมมติว่าผู้ใช้คนหนึ่งดูเนื้อหานาน 5 นาที ออกจากสตรีมวิดีโอ แล้วกลับมา การสร้างบุ๊กมาร์กจะบันทึกตำแหน่งของผู้ใช้ในสตรีม ดังนั้นสตรีมจะกลับมาที่จุดที่ดูค้างไว้ ทำให้ผู้ชมได้รับประสบการณ์ที่ราบรื่น
การบุ๊กมาร์ก DAI ขั้นสูง
เมื่อบุ๊กมาร์กสตรีม DAI คุณต้องบันทึกรหัสสตรีมและเวลาเมื่อผู้ใช้ออกจากวิดีโอ เมื่อผู้ใช้กลับมา ให้ขอสตรีมอีกครั้งและมองหาเวลาที่บันทึกไว้ เนื่องจากแต่ละอินสแตนซ์ของสตรีมที่ขออาจมีช่วงพักโฆษณาตามระยะเวลาที่ต่างกัน การบันทึกเวลาของสตรีมจึงไม่ทำงาน สิ่งที่คุณจะทำจริงๆ คือทำต่อจากเวลาแสดงเนื้อหาเดิม
วิธีการ Conversion ที่ช่วยได้
IMA DAI SDK มีวิธีขอเวลาของเนื้อหาสำหรับเวลาสตรีมที่ระบุ และเวลาสตรีมสำหรับเวลาของเนื้อหาที่ระบุ เมื่อใช้วิธี Conversion เหล่านี้ คุณจะจัดเก็บเวลาของเนื้อหาที่บุ๊กมาร์กไว้ จากนั้นค้นหาเวลาในสตรีมที่สอดคล้องกันในอินสแตนซ์ใหม่ของสตรีมได้ นี่คือวิธีการ ซึ่งรวมถึงลิงก์ไปยังแอปตัวอย่างที่แสดงการใช้บุ๊กมาร์กที่ทำงานอยู่
การบันทึกบุ๊กมาร์ก
บันทึกบุ๊กมาร์กเมื่อกิจกรรมหยุดชั่วคราว
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.contentPlayer pause];
// Ignore this if you're presenting a modal view (e.g. in-app clickthrough).
if ([self.navigationController.viewControllers indexOfObject:self] ==
NSNotFound) {
NSTimeInterval contentTime =
[self.streamManager contentTimeForStreamTime:CMTimeGetSeconds(
self.contentPlayer.currentTime)];
self.video.savedTime = contentTime;
...
}
}
}
กำลังโหลดบุ๊กมาร์ก
โหลดบุ๊กมาร์กเมื่อขอสตรีมอีกครั้ง เป็นส่วนหนึ่งของการใช้
อินเทอร์เฟซ VideoStreamPlayer
- (void)streamManager:(IMAStreamManager *)streamManager didReceiveAdEvent:(IMAAdEvent *)event {
...
case kIMAAdEvent_STREAM_LOADED: {
if (self.video.savedTime > 0) {
NSTimeInterval streamTime =
[self.streamManager streamTimeForContentTime:self.video.savedTime];
[self.IMAVideoDisplay.playerItem
seekToTime:CMTimeMakeWithSeconds(streamTime, NSEC_PER_SEC)];
self.video.savedTime = 0;
}
}
}