音軌
Web Receiver SDK 提供音軌選項
AudioTracksManager
敬上
可簡化並簡化音軌選取程序的類別,讓您擁有更大的掌控權
更方便存取名稱、網址和語言等屬性這個課程
最適合用於
cast.framework.events.EventType.PLAYER_LOAD_COMPLETE
敬上
活動。
API 提供多種查詢及選取有效音軌的方式。這裡 以下範例說明如何透過指定 ID,選取要啟用的音軌:
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)
,即可傳回指定語言的所有字幕軌。
系統會從媒體資訊清單擷取音訊語言代碼,且程式碼應如下所示 RFC 5646。語言代碼可以使用 2 個字元命名法,例如 「es」、「en」或「de」) 或 4 個字元的命名法 (例如「en-us」、「es-es」或 「fr-ca」)。
如果媒體資訊清單遵循不同的語言代碼標準,
接收端應用程式需要將其轉換為符合 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
敬上
可簡化並簡化音軌選取程序的類別,讓您擁有更大的掌控權
更方便地存取名稱、網址和語言等屬性
TextTracksManager
類別最適合用於
cast.framework.events.EventType.PLAYER_LOAD_COMPLETE
活動。
Web Receiver SDK 中的隱藏式輔助字幕選項經過簡化 與 SDK 的其他部分共用
這個 API 支援控制 WebVTT、TTML 和 CEA-608。
TextTracksManager
類別提供多種查詢與選取封閉功能的方式
啟用字幕軌以下範例說明如何選取第一個音軌
指定其 ID,以維持有效狀態:
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)
,即可傳回指定語言的所有字幕軌。
文字語言代碼已從媒體資訊清單擷取,且應遵循 RFC 5646。語言代碼可以使用 2 個字元命名法,例如 「es」、「en」或「de」),或是由 4 個字元組成的命名法 (例如「en-us」、「es-es」或 「fr-ca」)。
如果媒體資訊清單遵循不同的語言代碼標準,
接收端應用程式必須將收到的所有要求轉換成該標準。這些
要求 (例如語音指令) 使用 RFC 5646 語言代碼。網路接收端
SDK 會提供攔截器 EDIT_TRACKS_INFO
,將要求轉譯為
資訊清單的標準:
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 應用程式中加入強製字幕,您需要將字幕加入
部分條件在資訊清單中,將測試群組的角色設為
forced-subtitle
。Cask SDK 收到這些音軌後,
以強製字幕的形式呈現由於 Cast SDK 會
可以分開顯示強製字幕和隱藏式輔助字幕也就是說,觀眾不會
能夠選取強製字幕
啟用隱藏式輔助字幕時,系統會停用強製字幕 造成說明文字重疊關閉隱藏式輔助字幕或採用強製字幕時 那麼系統會根據 觀眾的音訊語言偏好設定。