Cast SDK มี API ในตัวเพื่อรองรับเนื้อหาสด ซึ่งรวมถึง UI ที่ยืดหยุ่นและพร้อมใช้งานทันที พร้อมกับ API ที่ช่วยให้นักพัฒนาซอฟต์แวร์สร้าง ด้วยการเขียนโค้ดเพียงไม่กี่บรรทัด Live API รองรับการแสดง เวลาเริ่มต้นและสิ้นสุด ข้อมูลเมตาของโปรแกรม การควบคุม DVR และกรอบเวลาที่ค้นหาได้
คู่มือนี้แสดงวิธีกำหนดค่าสตรีมไปยัง API แบบสด ซึ่งประกอบด้วย ตัวอย่างโค้ดและข้อมูลเมตาสำหรับการกำหนดค่าสถานการณ์หลักของการถ่ายทอดสด รวมถึง ภาพหน้าจอที่แสดงให้เห็นว่าแต่ละสถานการณ์มีลักษณะอย่างไร
ข้อกำหนดเบื้องต้น
ความคุ้นเคยกับพื้นฐานของการใช้งาน ต้องมีตัวรับเว็บก่อนตรวจสอบ นอกจากนี้ ในการเรียกใช้ตัวอย่างโค้ด คุณจะต้องมีสิทธิ์เข้าถึง สตรีมที่สอดคล้องกับหนึ่งใน ประเภทสื่อที่รองรับสำหรับ Cast โดยทั่วไป คุณลักษณะการถ่ายทอดสด สนับสนุนการกำหนดค่าสตรีมแบบสดโดยทั่วไป สื่อที่รองรับ
คำต่อไปนี้ใช้ตลอดทั้งคำแนะนำ
- ระยะเวลาที่ค้นหาได้ - ช่วงของสตรีมแบบสดที่ผู้ใช้ค้นหาได้
- Live Edge - ส่วนล่าสุดของสตรีมแบบสดที่พร้อมให้ผู้เล่นใช้งาน
- Play Head - การประทับเวลาของ UI สำหรับตำแหน่งการเล่นปัจจุบัน
การแคสต์สตรีมแบบสด
การกำหนดค่า Web Receiver SDK เพื่อใช้ Live API สำหรับ เนื้อหา:
- โดยใช้ตัวดักจับข้อความ
LOAD
ในแอปพลิเคชัน Web Receiver ของคุณ (แนะนำ) - โดยใช้คำขอโหลดที่สร้างขึ้นจากฝั่งผู้ส่งหรือฝั่งผู้รับ
เครื่องมืออินเตอร์เซกเตอร์จะให้
LoadRequestData
ที่มีข้อมูลเมตาที่สำคัญทั้งหมดเกี่ยวกับคำขอโหลด ถึง
ระบุว่าคำขอโหลดมีไว้สำหรับสตรีมแบบสด เพียงแค่ตั้งค่า
streamType
ใน
mediaInformation
คัดค้าน
StreamType.LIVE
MediaInformation.duration
ควรเป็น -1
เนื่องจากอินสแตนซ์ของโปรแกรมเล่นคือ
มีหน้าที่คำนวณเมื่อเนื้อหามีขนาด LIVE
/*
* This interceptor is called before your content is loaded by a Cast device
*/
playerManager.setMessageInterceptor(
cast.framework.messages.MessageType.LOAD,
request => { /* cast.framework.messages.LoadRequestData */
request.media.streamType = cast.framework.messages.StreamType.LIVE;
return request;
});
การเพิ่มข้อมูลคู่มือรายการทีวี
สตรีมแบบสด โดยเฉพาะสตรีมที่แสดงเป็นเวลานานอย่างช่องทีวี จะทำสิ่งต่อไปนี้ได้ แสดงคำแนะนำบนหน้าจอ/ข้อมูลเมตาแบบเป็นโปรแกรมโดยอิงตามการเล่นปัจจุบัน ตำแหน่งที่เจาะจงในสตรีมแบบสด ขอแนะนำให้ผู้ให้บริการเนื้อหาใส่ ข้อมูลเมตาของการเขียนโปรแกรมในแอปพลิเคชัน Web Receiver สำหรับผู้ใช้ที่ดียิ่งขึ้น ประสบการณ์การใช้งาน
คุณสามารถกำหนดค่าข้อมูลคำแนะนำเริ่มต้นสำหรับสตรีมในข้อความ LOAD
ในลักษณะเดียวกับที่เราระบุว่าสตรีมเป็นสตรีมแบบสดใน
ตัวอย่างก่อนหน้านี้ ส่วนแต่ละรายการหรือรายการในสตรีมแบบสด
แสดงเป็น
MediaMetadata
ซึ่งจะจัดเก็บไว้ใน
คิว
มีชั้นเรียน MediaMetadata
ที่แตกต่างกันสำหรับโปรแกรมประเภทต่างๆ เช่น
TvShowMediaMetadata
,
MovieMediaMetadata
,
MusicTrackMediaMetadata
อื่นๆ
ในข้อมูลโค้ดต่อไปนี้ เราใช้ออบเจ็กต์ MediaMetadata
เพื่อระบุ
ด้วย
UNIX Timestamp พร้อมค่า
sectionStartAbsoluteTime
ระยะเวลาของรายการจะแสดงเป็นวินาที
// The metadata for a single TV show
const currentShow = new cast.framework.messages.TvShowMediaMetadata();
currentShow.episode = 15;
currentShow.seriesTitle = 'The Odyssey';
currentShow.title = 'Scylla and Charybdis';
currentShow.sectionStartAbsoluteTime = toUnixTimestamp('9:00 PM');
currentShow.sectionDuration = HOUR_IN_SECONDS;
const previousShow = new ...;
const nextShow = new ...;
const containerMetadata = new cast.framework.messages.ContainerMetadata();
containerMetadata.title = 'My TV Channel';
containerMetadata.sections = [previousShow, currentShow, nextShow];
playerManager.getQueueManager().setContainerMetadata(containerMetadata);
ระยะที่ค้นหาได้แบบเรียลไทม์
Cast SDK มีองค์ประกอบ UI และการควบคุมที่อนุญาตให้ผู้ใช้ย้ายตำแหน่ง ส่วนหัวของตัวควบคุมการเล่นภายในสตรีมโดยใช้ ตัวควบคุมที่ขยาย หรือการควบคุมด้วยการสัมผัสในอุปกรณ์ที่เปิดใช้ระบบสัมผัส
LiveSeekableRange
แสดงช่วงเวลาในสตรีมที่ผู้ใช้สามารถค้นหาได้ ใน
ตัวรับเว็บที่คุณสามารถเข้าถึงข้อมูลเกี่ยวกับช่วงที่ค้นหาได้ผ่านทาง
PlayerManager.getLiveSeekableRange()
ซึ่งแสดงผล
LiveSeekableRange
ออบเจ็กต์ พร็อพเพอร์ตี้หลักของออบเจ็กต์ที่ควรระวังมีดังนี้
- start — เวลาเริ่มต้น (เป็นวินาที) ของช่วงที่สัมพันธ์กับ เริ่มต้นสตรีมในเวลาไม่กี่วินาที
- end — เวลาสูงสุดที่เป็นไปได้ (เป็นวินาที) ที่โปรแกรมเล่นสามารถค้นหาได้ ตามกลุ่มที่มีอยู่ เมื่อเทียบกับช่วงเริ่มต้นของสตรีม
- isMovingWindow — ค่าบูลีนที่ระบุว่าช่วงที่ค้นหาได้หรือไม่ ย้าย (เช่น นำส่วนเก่าออกจากไฟล์ Manifest) ไปกับสตรีม ค่านี้ควรเป็น true สำหรับสตรีมแบบสดทั้งหมด
- isLiveDone — ค่าบูลีนที่ระบุว่าสตรีมแบบสดมี เสร็จสิ้นแล้ว หมายความว่าจะไม่มีการสร้างกลุ่มใหม่ขึ้นมา
ขนาดของช่วงที่ค้นหาได้ ซึ่งแสดงเป็นเวลาระหว่าง start
ถึง
end
พิจารณาจากจำนวนกลุ่มที่มีในสตรีม และจะ
เคลื่อนไปตามสตรีม ตัวอย่างเช่น หากที่ช่วงเริ่มต้นของสตรีม ปุ่มที่ค้นหาได้
ช่วงคือ {start:0, end: 600, isMovingWindow: false, isLiveDone: false}
, 10
วินาทีหลังจากที่สตรีมเริ่ม สตรีมอาจกลายเป็น {start: 10, end: 610,
isMovingWindow: true, isLiveDone: false}
คุณควรคำนึงถึงจุดเริ่มต้นและ
ระบบจะอัปเดตเวลาสิ้นสุดในช่วงที่ค้นหาได้โดยอิงตามระยะเวลาที่ใช้
สร้างกลุ่มใหม่ ดังนั้นหากความยาวโดยทั่วไปของ
ส่วนใดส่วนหนึ่งสำหรับสตรีมของคุณ
10 วินาที เวลาเริ่มต้นและสิ้นสุดจะอัปเดตทุกๆ 10 วินาทีโดยประมาณ
ปิดใช้การกรอวิดีโอ
หากต้องการปิดใช้การกรอวิดีโอในสตรีม คุณต้องนำฟังก์ชันการค้นหาออก จากคำสั่งสื่อที่รองรับใน Web Receiver ดังนี้
// disable seeking in the LOAD messageInterceptor
playerManager.removeSupportedMediaCommands(cast.framework.messages.Command.SEEK, true);
กำลังนำคำสั่งสื่อที่รองรับสำหรับสัญญาณ SEEK
ออกจากแอปพลิเคชันผู้ส่ง
และหน้าจอสัมผัสเพื่อปิดใช้การกรอวิดีโอ แต่ไม่ปิดใช้คำสั่งเสียง
"Ok Google ย้อนกลับ 30 วินาที" ดู
คำสั่งสื่อที่รองรับด้วยเสียง
เพื่อดูรายละเอียดเกี่ยวกับวิธีปิดใช้คําสั่งสื่อสําหรับเสียง
กิจกรรมเกี่ยวกับเฟรมเวิร์กแบบสด
มี 2 กิจกรรม ได้แก่ LIVE_ENDED
และ LIVE_IS_MOVING_WINDOW_CHANGED
รวมอยู่ใน
Live API ทั้ง 2 เหตุการณ์ผ่านการตรวจสอบแล้ว
LiveStatusEvent
ซึ่งมีช่วงที่ค้นหาได้แบบสดในปัจจุบัน
กิจกรรม | คำอธิบาย |
---|---|
LIVE_ENDED |
ทริกเกอร์เมื่อสตรีมแบบสดสิ้นสุดลง ณ จุดนี้ ค่า end ใน LiveSeekableRange จะหยุดอัปเดต ผู้ใช้จะยังคงดูเนื้อหาภายในช่วงที่ค้นหาได้แบบสดได้ |
LIVE_IS_MOVING_WINDOW_CHANGED |
ทริกเกอร์เมื่อช่วงที่ค้นหาได้ของสตรีมแบบสดเปลี่ยนจากช่วงเวลาคงที่เป็นช่วงเวลาที่มีการเคลื่อนไหว หรือในทางกลับกัน สำหรับสตรีมแบบสด เหตุการณ์นี้จะใช้เมื่อโปรแกรมเล่นตรวจพบว่าไฟล์ Manifest กำลังนำส่วนก่อนหน้าออก |
สถานการณ์ของสตรีมแบบสด
สถานการณ์ที่เป็นไปได้สำหรับสตรีมมิงแบบสดมีอยู่ 8 ประเภท ซึ่งแต่ละประเภทมีดังนี้ กำหนดค่าได้ด้วยการตั้งค่า 3 แบบหลักดังนี้
- สตรีมมีเวลาเริ่มต้น
- สตรีมมีเวลาสิ้นสุด
- ผู้ใช้สามารถค้นหาภายในกรอบเวลาที่ค้นหาได้ของสตรีมแบบสดได้
โปรดดูการเพิ่มข้อมูลคู่มือโปรแกรมสำหรับวิธีกำหนดค่า ค่าเหล่านั้น
ด้านล่างนี้คือคำอธิบายและภาพหน้าจอของสถานการณ์ที่การถ่ายทอดสดที่รองรับ API ตัวแปร T1 และ T2 ใช้เพื่อแสดงการประทับเวลาใน ซ้ายและขวาของ UI ตามลำดับ
เวลาเริ่มต้น | เวลาสิ้นสุด | ค้นหาได้ | T1 | T2 | |
---|---|---|---|---|---|
สถานการณ์ 1 | ไม่ได้ | ไม่ได้ | ไม่ได้ | ส่วนหัวของตัวควบคุมการเล่น | ไม่แสดง |
สถานการณ์ 7 | ใช่ | ได้ | ไม่ได้ | แสดงเวลาเริ่มต้น | แสดงเวลาสิ้นสุด |
สถานการณ์ 8 | ใช่ | ได้ | ใช่ | แสดงเวลาเริ่มต้น | แสดงเวลาสิ้นสุด |
สถานการณ์ที่ 1
เวลาเริ่มต้น | เวลาสิ้นสุด | ค้นหาได้ | T1 | T2 |
---|---|---|---|---|
ไม่ได้ | ไม่ได้ | ไม่ได้ | เล่นส่วนหัว | ไม่แสดง |
สถานการณ์ที่ 1 ไม่มีเวลาเริ่มต้นหรือสิ้นสุด และผู้ใช้ไม่สามารถค้นหาภายในช่วงเวลา สตรีม เมื่อผู้ใช้หยุดสตรีม การเล่นจะกลับมาทำงานอีกครั้งจากขอบการถ่ายทอดสดแทน ของตำแหน่งที่สตรีมหยุดชั่วคราว
สถานการณ์ที่ 7
เวลาเริ่มต้น | เวลาสิ้นสุด | ค้นหาได้ | T1 | T2 |
---|---|---|---|---|
ใช่ | ได้ | ไม่ได้ | ส่วนหัวของตัวควบคุมการเล่น | ระยะเวลาของโปรแกรม |
สถานการณ์ที่ 7 มีเวลาเริ่มต้นและเวลาสิ้นสุด แต่ไม่สามารถค้นหาได้ สอง การประทับเวลาใน UI, T1 และ T2 แสดงเวลาและจำนวนรวมของส่วนหัวของตัวควบคุมการเล่นปัจจุบัน ระยะเวลาโปรแกรมตามลำดับ หากผู้ใช้หยุดเล่นชั่วคราว/เล่นต่อ สตรีมจะ ให้กลับมาทำงานอีกครั้งที่ขอบของสตรีม ในตัวอย่างข้างต้น ส่วนสีแดงของ แถบเลื่อนแสดงส่วนของสตรีมนับตั้งแต่ผู้ใช้เริ่ม ที่ดูวิดีโอ
สถานการณ์ที่ 8
เวลาเริ่มต้น | เวลาสิ้นสุด | ค้นหาได้ | T1 | T2 |
---|---|---|---|---|
ใช่ | ได้ | ใช่ | ส่วนหัวของตัวควบคุมการเล่น | ระยะเวลาของโปรแกรม |
สถานการณ์ที่ 7 มีเวลาเริ่มต้น เวลาสิ้นสุด และสามารถค้นหาได้ การประทับเวลา 2 รายการ ใน UI, T1 และ T2 ให้แสดงเวลาของส่วนหัวของตัวควบคุมการเล่นปัจจุบันและโปรแกรมทั้งหมด ตามลำดับ หากผู้ใช้หยุดเล่นชั่วคราว/เล่นต่อ สตรีมจะกลับมาทำงานอีกครั้ง ในขณะที่หยุดชั่วคราวหากอยู่ในหน้าต่างที่ค้นหาได้ พื้นที่ที่เป็นสีแดงบน แถบเลื่อนจะแสดงตำแหน่งที่ผู้ใช้ย้อนกลับได้และพื้นที่ที่เป็นสีขาว แสดงถึงที่ที่พวกเขาสามารถมุ่งไปข้างหน้าได้
การกำหนดค่าสถานการณ์
การกำหนดค่าสตรีมเป็นสถานการณ์สดที่เจาะจงจะแบ่งออกเป็น 3 ส่วน ดังนี้
- ตั้งค่าประเภทสตรีม - ทำเครื่องหมายสตรีมว่าเป็น สตรีมแบบสด
- เพิ่มข้อมูลคู่มือโปรแกรม - กำหนดเวลาเริ่มต้น
และระยะเวลาในออบเจ็กต์
MediaMetadata
- กำหนดค่าฟังก์ชันการกรอวิดีโอ - เปิดใช้หรือ ปิดใช้การกรอวิดีโอ
ลักษณะการเล่น
โดย UI จะอัปเดตข้อมูลเมตาการเล่นต่อไปขณะที่หยุดชั่วคราว รวมส่วนหัวการเล่นและเวลา Edge สด เมื่อสตรีมกลับมาเล่นอีกครั้ง เป็นลักษณะการทำงานบางอย่างที่ควรทราบ ซึ่งจะแตกต่างกันไปตามการกำหนดค่าของสตรีม
สตรีมที่ค้นหาได้
เมื่อสตรีมที่ค้นหาได้กลับมาแสดงอีกครั้ง
- ขอบแบบเรียลไทม์ต้องได้รับการอัปเดตเป็นตําแหน่งแบบเรียลไทม์และช่วงที่ค้นหาได้ จะได้รับการปรับให้สอดคล้องกัน
- หากส่วนหัวของตัวควบคุมการเล่นข้ามผ่านรายการปัจจุบัน ระบบจะอัปเดตแถบกรอ พร้อมข้อมูลเมตาจากรายการใหม่ (รวมถึงเวลาเริ่มต้นและเวลาสิ้นสุด หาก ว่าง)
- หากหน้าต่างที่ค้นหาได้มีความยาว "X" ช่วงที่ค้นหาได้จะขยายกลับไปที่ ไม่เกิน "X" หรือในช่วงต้นของการแสดง แล้วแต่ว่าจำนวนใดจะน้อยกว่า
- หากผู้ใช้หยุดชั่วคราวเป็นเวลานานพอจนออกจากเวลาปัจจุบันไปแล้ว หน้าต่างที่ค้นหาได้ สตรีมจะกลับมาทำงานอีกครั้งในจุดแรกสุด (ซ้ายสุด) ของหน้าต่างที่ค้นหาได้
กรอวิดีโอไปที่
LiveSeekableRange.end
ในการเล่นต่อที่ Live Edge หลังจากยกเลิกการหยุดชั่วคราว
let playerManager = cast.framework.CastReceiverContext.getInstance().getPlayerManager();
// Intercept the message to PLAY
playerManager.setMessageInterceptor(cast.framework.messages.MessageType.PLAY, (requestData) => {
...
if (playerManager.getLiveSeekableRange()) {
// Resume playback at the live edge
playerManager.seek(playerManager.getLiveSeekableRange().end);
} else {
return requestData;
}
...
});
สตรีมที่ค้นหาไม่ได้
เมื่อสตรีมที่ค้นหาไม่ได้กลับมาทำงานอีกครั้ง สิ่งที่จะเกิดขึ้นมีดังนี้
- ในกรณีนี้ การเล่นจะกลับมาทำงานที่ Edge สด
- หากขอบสดข้ามผ่านรายการปัจจุบัน แถบกรอควรจะ อัปเดตด้วยข้อมูลเมตาจากรายการใหม่ (รวมถึงเวลาเริ่มต้นและสิ้นสุด ทุกครั้ง)
การเปลี่ยนแปลงแพลตฟอร์ม API และ การปรับแต่ง UI การถ่ายทอดสด
Cast SDK มีการสนับสนุนในตัวสำหรับการสร้างอินเทอร์เฟซผู้ใช้ที่กำหนดเอง โดยใช้ UI ที่พร้อมใช้งานทันที อย่างไรก็ตาม คุณจะต้องปฏิบัติตาม รายการตรวจสอบการออกแบบ UX ของการแคสต์เมื่อปรับแต่ง ของ Google
เว็บรีซีฟเวอร์
บนเว็บรีซีฟเวอร์ จะมี
PlayerData
มีช่องต่อไปนี้เพื่อให้นักพัฒนาซอฟต์แวร์ขยาย
อินเทอร์เฟซสำหรับสตรีมแบบสด
- isLive - ธงที่ระบุว่าสตรีมปัจจุบันเป็นสตรีมแบบสดหรือไม่ แทนที่จะเป็น VOD
- liveSeekableRange - ช่วงที่ค้นหาได้ที่จะแสดงบนการแบ่งหน้าจอ หน้าต่าง DVR
- mediaStartAbsoluteTime - เวลาที่ส่วนดังกล่าวเริ่มต้นในเวลาสัมบูรณ์ (UNIX Epoch)
- sectionStartTimeInMedia - เวลาเริ่มต้นของส่วนเป็นวินาทีที่สัมพันธ์กับ เวลาเริ่มต้นของสื่อ
- sectionDuration - ระยะเวลาของส่วนเป็นวินาที
และอย่าลืมคำนึงถึง การถ่ายทอดสด 2 รายการเมื่อปรับแต่ง UI
Android SDK
การใช้วิดเจ็ต Seekbar ของ Android ในฟังก์ชัน "สด"
UIMediaController
เลิกใช้งานแล้ว โปรดใช้ CastSeekBar
แทน