Trek audio
Untuk pemilihan trek audio, Web Receiver SDK menyediakan
AudioTracksManager
yang menyederhanakan dan mengefisienkan pemilihan trek, yang memberi Anda lebih banyak kontrol
serta akses yang lebih baik ke properti, seperti nama, URL, dan bahasa. Kelas ini
paling baik digunakan dalam pengendali peristiwa untuk
cast.framework.events.EventType.PLAYER_LOAD_COMPLETE
peristiwa.
API ini menyediakan berbagai cara untuk membuat kueri dan memilih trek audio yang aktif. Di sini, adalah contoh cara memilih jalur untuk diaktifkan dengan menentukan ID-nya:
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();
Class AudioTracksManager
juga menyediakan metode
getActiveTrack()
.
Berikut adalah contoh cara memilih trek audio pertama untuk bahasa, dalam hal ini adalah bahasa Inggris:
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();
Class AudioTracksManager
juga menyediakan metode
getTracksByLanguage(language)
yang menampilkan semua trek untuk bahasa yang ditentukan.
Kode bahasa audio diambil dari manifes media dan harus mengikuti RFC 5646. Kode bahasa dapat disajikan dalam nomenklatur 2 karakter (seperti "es", "en" atau "de"), atau nomenklatur 4 karakter (seperti "en-us", "es-es", atau "fr-ca").
Jika manifes media mengikuti standar kode bahasa yang berbeda, Web
Aplikasi penerima harus mengonversinya menjadi kode bahasa yang sesuai dengan RFC 5646. Web
SDK Penerima menyediakan interseptor EDIT_AUDIO_TRACKS
untuk dijalankan
modifikasi:
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();
Saat diputar melalui jeda iklan, semua pilihan trek audio, seperti bahasa, yang dibuat sebelum jeda akan tetap ditampilkan setelah jeda untuk konten yang sama, meskipun iklan dalam bahasa yang berbeda.
Teks tertutup (subtitel)
Untuk pilihan trek teks tertutup, Web Receiver SDK menyediakan
TextTracksManager
yang menyederhanakan dan mengefisienkan pemilihan trek, yang memberi Anda lebih banyak kontrol
serta akses yang lebih baik ke properti, seperti nama, URL, dan bahasa.
Class TextTracksManager
paling baik digunakan dalam pengendali peristiwa untuk
cast.framework.events.EventType.PLAYER_LOAD_COMPLETE
peristiwa.
Pilihan teks tertutup di SDK Penerima Web disederhanakan dan disederhanakan dengan bagian lain dari SDK.
API ini mendukung pengontrolan WebVTT, TTML, dan CEA-608.
Class TextTracksManager
menyediakan berbagai cara untuk membuat kueri dan memilih peristiwa yang telah ditutup
teks menjadi aktif. Berikut ini contoh cara memilih {i>track <i}pertama
aktif dengan menentukan ID-nya:
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();
Class TextTracksManager
juga menyediakan metode
getActiveTracks()
.
Berikut ini contoh cara memilih trek teks pertama untuk bahasa:
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();
Class TextTracksManager
juga menyediakan metode
getTracksByLanguage(language)
yang menampilkan semua trek untuk bahasa yang ditentukan.
Kode bahasa teks diambil dari manifes media dan harus mengikuti RFC 5646. Kode bahasa dapat disajikan dalam nomenklatur 2 karakter (seperti "es", "en" atau "de"), atau nomenklatur 4 karakter (seperti "en-us", "es-es", atau "fr-ca").
Jika manifes media mengikuti standar kode bahasa yang berbeda, Web
Aplikasi penerima perlu mengonversi permintaan masuk ke standar tersebut. Ini
seperti perintah suara, gunakan kode bahasa RFC 5646. Penerima Web
SDK menyediakan EDIT_TRACKS_INFO
pencegat untuk menerjemahkan permintaan ke
standar manifes:
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 ini memungkinkan developer menambahkan trek teks tertutup baru secara dinamis, dalam hal ini untuk berbagai bahasa dan trek lain, lalu pilih satu trek untuk menjadi jalur aktif baru:
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();
Saat diputar melalui jeda iklan, setiap pilihan trek teks, seperti bahasa, dibuat sebelum jeda akan tetap ditampilkan setelah jeda untuk konten yang sama, meskipun iklan dalam bahasa yang berbeda.
Teks paksa
Teks paksa atau narasi paksa adalah overlay teks yang ditampilkan sehingga penonton dapat memahami kapan bahasa alternatif digunakan atau untuk memperjelas audio. Tidak seperti teks tertutup, penonton tidak perlu mengaktifkan teks paksa karena dipilih otomatis berdasarkan preferensi audio penonton.
Untuk menambahkan teks paksa ke aplikasi Cast, Anda perlu menyertakannya sebagai
dari manifes Anda. Dalam manifes, atur peran trek yang akan
forced-subtitle
. Ketika Cask SDK mengambil jalur
ini, Cask SDK akan mengidentifikasi
sebagai teks paksa. Tidak diperlukan pekerjaan pengirim karena Cast SDK akan
memisahkan teks paksa dan teks tertutup. Artinya, penonton tidak akan
dapat memilih teks paksa.
Saat teks tertutup diaktifkan, teks paksa akan dinonaktifkan untuk mencegah yang tumpang tindih. Saat teks tertutup dinonaktifkan dan jika teks paksa disediakan dalam manifes, maka teks paksa akan ditampilkan berdasarkan preferensi bahasa audio penonton.