Utwory

Ścieżki audio

Aby wybrać ścieżkę audio, pakiet SDK odbiornika internetowego zapewnia klasę AudioTracksManager, która upraszcza i upraszcza wybór ścieżki, zapewniając Ci większą kontrolę i lepszy dostęp do usług takich jak nazwa, adres URL czy język. Ta klasa jest najlepiej używana w module obsługi zdarzeń zdarzenia cast.framework.events.EventType.PLAYER_LOAD_COMPLETE.

Interfejs API udostępnia różne sposoby wysyłania zapytań i wybierania aktywnych ścieżek audio. Oto przykład użycia wybranej ścieżki do wskazania za pomocą jej identyfikatora:

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();

Klasa AudioTracksManager udostępnia też metodę getActiveTrack().

Oto przykład wyboru pierwszej ścieżki audio w danym języku:

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();

Klasa AudioTracksManager udostępnia też metodę getTracksByLanguage(language), która zwraca wszystkie ścieżki w określonym języku.

Kod języka audio jest pobierany z pliku manifestu multimediów i powinny być zgodne ze standardem RFC 5646. Kody języków mogą występować w 2-znakowej nazwie (np. „es”, „en” lub „de”) lub 4-znakowej (np. „en-us”, „es-es” lub „fr-ca”).

Jeśli plik manifestu jest zgodny z innym standardem języka programowania, aplikacja odbierająca musi przekonwertować go na kod języka zgodny ze standardem RFC 5646. Pakiet SDK odbiornika internetowego zawiera EDIT_AUDIO_TRACKS przechwytujący, który umożliwia wprowadzanie zmian:

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();

W przypadku przerw na reklamę wszelkie wybrane ścieżki audio, takie jak język, wybrane przed przerwą reklamową, pozostaną do niej przypisane po przerwie w przypadku tych samych treści, nawet jeśli reklamy są w innym języku.

Napisy

W przypadku wyboru ścieżki z napisami pakiet Web odbiornik SDK udostępnia klasę TextTracksManager, która upraszcza i upraszcza wybieranie ścieżki, zapewniając Ci większą kontrolę i lepszy dostęp do właściwości, takich jak nazwa, adres URL i język.

Klasa TextTracksManager jest najlepsza w module obsługi zdarzeń dla zdarzenia cast.framework.events.EventType.PLAYER_LOAD_COMPLETE.

Wybór napisów w pakiecie SDK odbiornika jest uproszczony i uproszczony z innymi częściami pakietu SDK.

API obsługuje sterowanie WebVTT, TTML i CEA-608.

Klasa TextTracksManager udostępnia różne sposoby wysyłania zapytań i wyboru ścieżki z napisami, która ma być aktywna. Oto przykład, który pozwala wybrać pierwszy utwór, który ma być aktywny, podając jego identyfikator:

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();

Klasa TextTracksManager udostępnia też metodę getActiveTracks().

Oto przykład, jak wybrać pierwszą ścieżkę tekstową dla danego języka:

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();

Klasa TextTracksManager udostępnia też metodę getTracksByLanguage(language), która zwraca wszystkie ścieżki w określonym języku.

Kod języka tekstu jest pobierany z pliku manifestu multimediów i powinny być zgodne ze standardem RFC 5646. Kody języków mogą występować w 2-znakowej nazwie (np. „es”, „en” lub „de”) lub 4-znakowej (np. „en-us”, „es-es” lub „fr-ca”).

Jeśli plik manifestu kreacji multimedialnej ma inny standard języka, aplikacja internetowa odbiorcy musi przekonwertować wszystkie przychodzące żądania na ten standard. Takie żądania, takie jak polecenia głosowe, używają kodów języków RFC 5646. Pakiet SDK odbiornika internetowego zawiera EDIT_TRACKS_INFO, który przechwytuje żądania zgodnie ze standardem pliku manifestu:

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();

Interfejs API umożliwia deweloperowi dynamiczne dodawanie nowych ścieżek napisów, w tym przypadku dla różnych języków i ścieżek pozapasmowych, a następnie wybranie ścieżki jako nowej aktywnej ścieżki:

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();

W przypadku przerw na reklamę wszelkie wybrane ścieżki audio, takie jak język, wybrane przed przerwą reklamową, pozostaną do niej przypisane, nawet jeśli reklamy będą w innym języku.

Wymuszone napisy

Wymuszone napisy lub wymuszona narracja to nakładka z tekstem, która informuje widza, kiedy używa alternatywnego języka lub doprecyzowuje dźwięk. W przeciwieństwie do napisów widz nie musi włączać wymuszonych napisów, ponieważ są one wybierane automatycznie na podstawie ustawień dźwięku.

Aby dodać napisy wymuszone do aplikacji Cast, musisz uwzględnić je w pliku manifestu. W pliku manifestu ustaw rolę ścieżki na forced-subtitle. Pakiet SDK Cask rejestruje te ścieżki jako wymuszane napisy. Nie musisz nic robić, ponieważ pakiet Cast SDK oddzieli napisy wymuszane i zamknięte. Oznacza to, że widzowie nie będą mogli wybrać wymuszonych napisów.

Gdy napisy są włączone, wymuszenie jest wyłączone. Pozwala to uniknąć nakładania się napisów. Gdy napisy są wyłączone i w pliku manifestu znajdują się napisy wymuszane, są one wyświetlane zgodnie z ustawieniami dźwięku ustawionymi przez widza.