แทร็กเสียง
สำหรับการเลือกแทร็กเสียง Web Receiver SDK จะมี
AudioTracksManager
ที่ช่วยลดความซับซ้อนและเพิ่มประสิทธิภาพการเลือกแทร็ก ทำให้คุณควบคุมได้มากขึ้น
และเข้าถึงพร็อพเพอร์ตี้อย่างเช่นชื่อ, URL และภาษาได้ดียิ่งขึ้น ชั้นเรียนนี้
ที่ดีที่สุดในเครื่องจัดการเหตุการณ์สำหรับ
cast.framework.events.EventType.PLAYER_LOAD_COMPLETE
กิจกรรม
API นำเสนอวิธีต่างๆ ในการค้นหาและเลือกแทร็กเสียงที่ใช้งานอยู่ ที่นี่ เป็นตัวอย่างของวิธีเลือกแทร็กให้ใช้งานได้โดยการระบุรหัสของแทร็กนั้น
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
playerManager.addEventListener(
cast.framework.events.EventType.PLAYER_LOAD_COMPLETE, () => {
const audioTracksManager = playerManager.getAudioTracksManager();
// Get all audio tracks
const tracks = audioTracksManager.getTracks();
// Choose the first audio track to be active by specifying its ID
audioTracksManager.setActiveById(tracks[0].trackId);
});
context.start();
ชั้นเรียน AudioTracksManager
ยังมีเมธอด
getActiveTrack()
ตัวอย่างวิธีเลือกแทร็กเสียงแรกสำหรับ ภาษา ซึ่งในกรณีนี้เป็นภาษาอังกฤษ
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
playerManager.addEventListener(
cast.framework.events.EventType.PLAYER_LOAD_COMPLETE, () => {
const audioTracksManager = playerManager.getAudioTracksManager();
// Set the first matching language audio track to be active
audioTracksManager.setActiveByLanguage('en');
});
context.start();
ชั้นเรียน AudioTracksManager
ยังมีเมธอด
getTracksByLanguage(language)
ซึ่งจะแสดงแทร็กทั้งหมดสำหรับภาษาที่ระบุ
รหัสภาษาของเสียงจะดึงมาจากไฟล์ Manifest ของสื่อและควรเป็นไปตาม RFC 5646 รหัสภาษาสามารถแสดงเป็นคำนามแบบ 2 อักขระ (เช่น "es", "en" หรือ "de") หรือการตั้งชื่อแบบอักขระ 4 ตัว (เช่น "en-us", "es-es" หรือ "fr-ca")
หากไฟล์ Manifest ของสื่อเป็นไปตามมาตรฐานรหัสภาษาอื่น
แอปตัวรับต้องแปลงเป็นรหัสภาษาที่สอดคล้องกับ RFC 5646 เว็บ
SDK ตัวรับมีตัวดักจับ EDIT_AUDIO_TRACKS
เพื่อดําเนินการ
การแก้ไข:
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
// Intercept the EDIT_AUDIO_TRACKS request
playerManager.setMessageInterceptor(cast.framework.messages.MessageType.EDIT_AUDIO_TRACKS, request => {
// write logic to convert language codes here
});
context.start();
เมื่อเล่นผ่านช่วงพักโฆษณา การเลือกแทร็กเสียงต่างๆ เช่น ภาษา ที่เกิดขึ้นก่อนช่วงพักโฆษณาจะยังคงอยู่หลังจากช่วงพักนั้นสำหรับเนื้อหาเดียวกัน แม้ว่า โฆษณาเป็นภาษาอื่น
คำบรรยายแทนเสียง (คำบรรยาย)
สำหรับการเลือกแทร็กคำบรรยายแทนเสียงนั้น Web Receiver SDK จะมอบ
TextTracksManager
ที่ช่วยลดความซับซ้อนและเพิ่มประสิทธิภาพการเลือกแทร็ก ทำให้คุณควบคุมได้มากขึ้น
และเข้าถึงพร็อพเพอร์ตี้อย่างเช่นชื่อ, URL และภาษาได้ดียิ่งขึ้น
คลาส TextTracksManager
จะใช้ได้ดีที่สุดในเครื่องจัดการเหตุการณ์สำหรับ
cast.framework.events.EventType.PLAYER_LOAD_COMPLETE
กิจกรรม
การเลือกคำบรรยายแทนเสียงใน Web Receiver SDK ทำได้ง่ายและมีประสิทธิภาพยิ่งขึ้น กับส่วนอื่นๆ ของ SDK
API รองรับการควบคุม WebVTT, TTML และ CEA-608
คลาส TextTracksManager
มีวิธีมากมายในการค้นหาและเลือก
แทร็กคำบรรยายที่ใช้งานอยู่ ตัวอย่างวิธีเลือกแทร็กแรกมีดังนี้
ให้มีสถานะใช้งานด้วยการระบุรหัส:
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
playerManager.addEventListener(
cast.framework.events.EventType.PLAYER_LOAD_COMPLETE, () => {
const textTracksManager = playerManager.getTextTracksManager();
// Get all text tracks
const tracks = textTracksManager.getTracks();
// Choose the first text track to be active by its ID
textTracksManager.setActiveByIds([tracks[0].trackId]);
});
context.start();
ชั้นเรียน TextTracksManager
ยังมีเมธอด
getActiveTracks()
ต่อไปนี้เป็นตัวอย่างวิธีเลือกแทร็กข้อความแรกสำหรับแท็ก ภาษา:
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
playerManager.addEventListener(
cast.framework.events.EventType.PLAYER_LOAD_COMPLETE, () => {
const textTracksManager = playerManager.getTextTracksManager();
// Set the first matching language text track to be active
textTracksManager.setActiveByLanguage('en');
});
context.start();
ชั้นเรียน TextTracksManager
ยังมีเมธอด
getTracksByLanguage(language)
ซึ่งจะแสดงแทร็กทั้งหมดสำหรับภาษาที่ระบุ
ระบบจะดึงรหัสภาษาของข้อความจากไฟล์ Manifest ของสื่อและควรเป็นไปตามนี้ RFC 5646 รหัสภาษาสามารถแสดงเป็นคำนามแบบ 2 อักขระ (เช่น "es", "en" หรือ "de") หรือคำเรียกที่มีอักขระ 4 ตัว (เช่น "en-us", "es-es" หรือ "fr-ca")
หากไฟล์ Manifest ของสื่อเป็นไปตามมาตรฐานรหัสภาษาอื่น
แอปตัวรับต้องแปลงคำขอที่เข้ามาใหม่เป็นมาตรฐานนั้น เหล่านี้
คำขอ เช่น คำสั่งเสียง จะใช้รหัสภาษา RFC 5646 เว็บรีซีฟเวอร์
SDK มีตัวดักจับ EDIT_TRACKS_INFO
เพื่อแปลคำขอไปยัง
มาตรฐานของไฟล์ Manifest
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
// intercept the EDIT_TRACKS_INFO request
playerManager.setMessageInterceptor(cast.framework.messages.MessageType.EDIT_TRACKS_INFO, request => {
// write logic to convert language codes here
});
context.start();
API ช่วยให้นักพัฒนาซอฟต์แวร์สามารถเพิ่มแทร็กคำบรรยายใหม่แบบไดนามิก สำหรับภาษาต่างๆ และแทร็กนอกย่านความถี่ จากนั้นเลือกแทร็กเพื่อ เป็นแทร็กใหม่ที่ใช้งานอยู่
const context = cast.framework.CastReceiverContext.getInstance();
const playerManager = context.getPlayerManager();
playerManager.addEventListener(
cast.framework.events.EventType.PLAYER_LOAD_COMPLETE, () => {
// Create text tracks object
const textTracksManager = playerManager.getTextTracksManager();
// Create track 1 for English text
const track1 = textTracksManager.createTrack();
track1.trackContentType = 'text/vtt';
track1.trackContentId = 'http://example.com/en.vtt';
track1.language = 'en';
// Create track 2 for Spanish text
const track2 = textTracksManager.createTrack();
const track2Id = track2.trackId;
track2.trackContentType = 'text/vtt';
track2.trackContentId = 'http://example.com/spa.vtt';
track2.language = 'spa';
// Add tracks
textTracksManager.addTracks([track1, track2]);
// Set the first matching language text track to be active
textTracksManager.setActiveByLanguage('en');
});
context.start();
เมื่อเล่นผ่านช่วงพักโฆษณา การเลือกแทร็กข้อความ เช่น ภาษา ก่อนช่วงพักโฆษณาจะคงอยู่หลังช่วงพักนั้นสำหรับเนื้อหาเดียวกัน แม้ว่า โฆษณาเป็นภาษาอื่น
คำบรรยายแทนเสียงแบบบังคับ
คำบรรยายที่บังคับหรือคำบรรยายที่บังคับคือ การวางซ้อนข้อความที่ปรากฏขึ้นเพื่อให้ ผู้ชมสามารถเข้าใจได้เมื่อมีการใช้ภาษาอื่นหรืออธิบายเสียงให้ชัดเจน ซึ่งต่างจากคำบรรยายแทนเสียงตรงที่ผู้ดูไม่จำเป็นต้องเปิดใช้คำบรรยายแบบบังคับ จากความต้องการของผู้ชม จะได้รับการเลือกโดยอัตโนมัติ
หากต้องการเพิ่มคำบรรยายแทนเสียงแบบบังคับลงในแอปพลิเคชัน Cast คุณจะต้องใส่คำบรรยายแทนเสียงไว้ด้วย
ในไฟล์ Manifest ในไฟล์ Manifest ของคุณ ให้ตั้งค่าบทบาทของแทร็กเป็น
forced-subtitle
เมื่อ Cask SDK ตรวจพบแทร็กเหล่านี้ ก็จะระบุ
เป็นคำบรรยายแบบบังคับ ผู้ส่งไม่จำเป็นต้องดำเนินการใดๆ เนื่องจาก Cast SDK จะ
คำบรรยายที่บังคับและคำบรรยาย ซึ่งหมายความว่าผู้ชมจะไม่
จะสามารถเลือกคำบรรยายที่บังคับได้
เมื่อเปิดใช้คำบรรยาย คำบรรยายแทนเสียงแบบบังคับจะปิดเพื่อป้องกันไม่ให้ การซ้อนทับของคำบรรยาย เมื่อปิดคำบรรยายแทนเสียงและหากมีการบังคับคำบรรยาย มีอยู่ในไฟล์ Manifest คำบรรยายที่บังคับจะปรากฏตาม ค่ากำหนดภาษาของเสียงผู้ชม