Lagu

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.