Trek audio
Untuk pemilihan trek audio, Web Receiver SDK menyediakan class AudioTracksManager
yang menyederhanakan dan menyederhanakan pemilihan trek, memberi Anda kontrol lebih besar serta akses yang lebih baik ke properti, seperti nama, URL, dan bahasa. Class ini
paling baik digunakan dalam pengendali peristiwa untuk
peristiwa cast.framework.events.EventType.PLAYER_LOAD_COMPLETE
.
API menyediakan berbagai cara untuk membuat kueri dan memilih trek audio aktif. Berikut adalah contoh cara memilih jalur yang akan 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 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 tertentu, dalam hal ini 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 jalur 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, aplikasi Penerima Web
harus mengonversinya menjadi kode bahasa yang sesuai dengan RFC 5646. Web
Receiver SDK menyediakan pencegat EDIT_AUDIO_TRACKS
untuk melakukan
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 memutar melalui jeda iklan, pilihan trek audio apa pun, seperti bahasa, yang dibuat sebelum jeda akan tetap ada setelah jeda untuk konten yang sama, meskipun iklan menggunakan bahasa yang berbeda.
Teks tertutup (subtitel)
Untuk pemilihan trek teks tertutup, Web Receiver SDK menyediakan class TextTracksManager
yang menyederhanakan dan menyederhanakan pemilihan trek, memberi Anda kontrol lebih besar serta akses yang lebih baik ke properti, seperti nama, URL, dan bahasa.
Class TextTracksManager
paling baik digunakan di pengendali peristiwa untuk
peristiwa cast.framework.events.EventType.PLAYER_LOAD_COMPLETE
.
Pemilihan teks tertutup di Web Receiver SDK disederhanakan dan disederhanakan dengan bagian SDK lainnya.
API ini mendukung pengontrolan WebVTT, TTML, dan CEA-608.
Class TextTracksManager
menyediakan berbagai cara untuk membuat kueri dan memilih trek teks
tertutup agar aktif. Berikut adalah contoh cara memilih jalur pertama
yang akan 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 adalah contoh cara memilih trek teks pertama untuk bahasa tertentu:
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 jalur 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, aplikasi Penerima
Web harus mengonversi permintaan masuk ke standar tersebut. Permintaan ini, seperti perintah suara, menggunakan kode bahasa RFC 5646. Web Receiver
SDK menyediakan EDIT_TRACKS_INFO
interseptor untuk menerjemahkan permintaan ke
standar manifes Anda:
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 memungkinkan developer untuk menambahkan trek teks tertutup baru secara dinamis, dalam hal ini untuk berbagai bahasa dan trek out-of-band, lalu memilih trek untuk menjadi trek 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 memutar melalui jeda iklan, pilihan trek teks apa pun, seperti bahasa, yang dibuat sebelum jeda akan tetap ada setelah jeda untuk konten yang sama, meskipun iklan menggunakan bahasa yang berbeda.
Teks otomatis
Teks otomatis atau narasi paksa adalah overlay teks yang ditampilkan sehingga penonton dapat memahami kapan bahasa alternatif digunakan atau untuk mengklarifikasi audio. Tidak seperti teks tertutup, penonton tidak perlu mengaktifkan teks paksa karena otomatis dipilih berdasarkan preferensi audio penonton.
Untuk menambahkan teks paksa ke aplikasi Cast, Anda harus menyertakannya sebagai
bagian dari manifes. Di manifes Anda, tetapkan peran trek menjadi forced-subtitle
. Saat mengambil trek ini, Cask SDK akan mengidentifikasinya
sebagai teks paksa. Tidak ada tugas pengirim yang diperlukan karena SDK Cast akan
memisahkan teks paksa dan teks tertutup. Artinya, penonton tidak akan dapat memilih teks paksa.
Jika teks tertutup diaktifkan, teks otomatis akan dinonaktifkan agar teks tidak tumpang-tindih. Jika teks tertutup dinonaktifkan dan jika teks otomatis disediakan dalam manifes, teks paksa akan ditampilkan berdasarkan preferensi bahasa audio penonton.