แทร็ก

แทร็กเสียง

สำหรับการเลือกแทร็กเสียง 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 คำบรรยายที่บังคับจะปรากฏตาม ค่ากำหนดภาษาของเสียงผู้ชม