# DVR
สำหรับวิดีโอแบบถ่ายทอดสด (Live) ByteArk Player SDK for iOS รองรับ DVR ซึ่งช่วยให้ผู้ชมสามารถ Seek ย้อนกลับภายในช่วงเวลาของ Live (Live window) และกระโดดกลับไปยังจุด Live ล่าสุดได้ โดย DVR เป็นฟีเจอร์แบบ Opt-in และใช้ได้เฉพาะกับวิดีโอแบบ Live เท่านั้น
# เปิดใช้งาน DVR
เปิด DVR ด้วย .dvr(enabled:) บน ByteArkPlayerConfigBuilder โดยค่าเริ่มต้นจะปิดอยู่
let config = try ByteArkPlayerConfigBuilder(licenseKey: "<YOUR_LICENSE_KEY>")
.item(item)
.dvr(enabled: true)
.build()
1
2
3
4
2
3
4
DVR จะทำงานเฉพาะกับ Live stream ที่ Seek ได้และมี Live window ยาวพอที่จะผ่านเกณฑ์ขั้นต่ำ (Engagement threshold) เมื่อทำงาน ตัวควบคุมจะปลดล็อกให้ Seek ได้ทั่วทั้ง Window แทนที่จะล็อกอยู่ที่จุด Live
# Seek ภายใน Live window
// Seek ถอยหลังตามระยะเวลาที่ตั้งไว้
player.seekBackward()
// Seek ไปข้างหน้าตามระยะเวลาที่ตั้งไว้
player.seekForward()
// กลับไปยังจุด Live ล่าสุด (ไม่มีผลเมื่อ DVR ไม่ทำงาน)
player.seekToLive()
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# ตรวจสอบสถานะ DVR
isDVRActive บอกว่า DVR กำลังทำงานอยู่หรือไม่ และ dvrWindow ให้ข้อมูลช่วงเวลาที่ Seek ได้
// DVR กำลังทำงานอยู่หรือไม่
let active: Bool = player.isDVRActive
// ช่วงเวลาที่ Seek ได้ หรือ nil เมื่อ DVR ไม่ทำงาน
if let window = player.dvrWindow {
let start = window.start // ตำแหน่งเก่าสุดที่ Seek ได้ (วินาที)
let end = window.end // จุด Live ล่าสุด (วินาที)
let duration = window.duration // ความยาวที่ Seek ได้ของ Window (วินาที)
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# API
| API | คำอธิบาย |
|---|---|
.dvr(enabled:) | ตัวเลือกใน Config builder สำหรับเปิด DVR ให้กับ Live stream (ค่าเริ่มต้น false) |
func seekToLive() | กลับไปยังจุด Live ล่าสุด (ไม่มีผลเมื่อ DVR ไม่ทำงาน) |
func seekForward() | Seek ไปข้างหน้าตามระยะเวลาที่ตั้งไว้ |
func seekBackward() | Seek ถอยหลังตามระยะเวลาที่ตั้งไว้ |
var isDVRActive: Bool { get } | DVR กำลังทำงานอยู่หรือไม่ (เปิดใช้งาน, เป็น Live stream และ Window ผ่านเกณฑ์) |
var dvrWindow: DVRWindow? { get } | ช่วงเวลาที่ Seek ได้ หรือ nil เมื่อ DVR ไม่ทำงาน |
# DVRWindow
| Property | Type | คำอธิบาย |
|---|---|---|
start | TimeInterval | ตำแหน่งเก่าสุดที่ Seek ได้ (ด้านหลังของ Window) |
end | TimeInterval | ตำแหน่งใหม่สุดที่ Seek ได้ (จุด Live) |
duration | TimeInterval | ความยาวที่ Seek ได้ของ Window (end - start) |