Titel

Audiotracks

Zur Auswahl des Audiotracks bietet das Web Receiver SDK eine AudioTracksManager-Klasse, mit der die Track-Auswahl vereinfacht und optimiert wird. So haben Sie mehr Kontrolle und Zugriff auf Eigenschaften wie Name, URL und Sprache. Diese Klasse wird am besten im Event-Handler für das Ereignis cast.framework.events.EventType.PLAYER_LOAD_COMPLETE verwendet.

Die API bietet verschiedene Möglichkeiten, die aktiven Audiotracks abzufragen und auszuwählen. Hier ist ein Beispiel, wie Sie einen aktiven Track auswählen können, indem Sie seine ID angeben:

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

Die Klasse AudioTracksManager bietet auch die Methode getActiveTrack().

In diesem Beispiel wird der erste Audiotrack für eine bestimmte Sprache ausgewählt, in diesem Fall Englisch:

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

Die Klasse AudioTracksManager bietet auch die Methode getTracksByLanguage(language), die alle Tracks für die angegebene Sprache zurückgibt.

Der Audiosprachcode wird aus dem Mediamanifest abgerufen und sollte RFC 5646-konform sein. Sprachcodes können im zweistelligen Namen verwendet werden (z. B. „es“, „en“ oder „de“) oder vierstellig (z. B. „en-us“, „es-es“ oder „fr-ca“).

Wenn das Mediamanifest einen anderen Sprachcodestandard erfüllt, muss die Web Receiver App ihn in einen RFC 5646-konformen Sprachcode konvertieren. Das Web Receiver SDK bietet ein Abfangtool EDIT_AUDIO_TRACKS, um Änderungen vorzunehmen:

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

Wenn Sie Werbeunterbrechungen abspielen, wird die gesamte Audiospur, die Sie vor der Werbeunterbrechung auswählen, z. B. die Sprache, nach der Pause für denselben Inhalt beibehalten, auch wenn die Anzeigen in einer anderen Sprache verfasst sind.

Untertitel

Zur Auswahl der Untertitel-Track bietet das Web Receiver SDK die TextTracksManager-Klasse, die die Track-Auswahl vereinfacht und optimiert. So hast du mehr Kontrolle und Zugriff auf Attribute wie Name, URL und Sprache.

Die Klasse TextTracksManager wird am besten im Event-Handler für das Ereignis cast.framework.events.EventType.PLAYER_LOAD_COMPLETE verwendet.

Die Auswahl von Untertiteln im Web Receiver SDK wird durch andere Teile des SDKs vereinfacht.

Die API unterstützt die Steuerung von WebVTT, TTML und CEA-608.

Die Klasse TextTracksManager bietet verschiedene Möglichkeiten zum Abfragen und Auswählen eines aktiven Untertitel-Tracks. Hier ist ein Beispiel, wie Sie den ersten Track auswählen, der aktiv ist, indem Sie seine ID angeben:

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

Die Klasse TextTracksManager bietet auch die Methode getActiveTracks().

Hier ein Beispiel für die Auswahl des ersten Texttracks für eine bestimmte Sprache:

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

Die Klasse TextTracksManager bietet auch die Methode getTracksByLanguage(language), die alle Tracks für die angegebene Sprache zurückgibt.

Der Textsprachcode wird aus dem Mediamanifest abgerufen und sollte RFC 5646-konform sein. Sprachcodes können im zweistelligen Namen verwendet werden (z. B. „es“, „en“ oder „de“) oder in vier Zeichen (z. B. „en-us“, „es-es“ oder „fr-ca“).

Wenn das Medienmanifest einem anderen Sprachcodestandard entspricht, muss die Web Receiver App alle eingehenden Anfragen in diesen Standard umwandeln. Für diese Anfragen, z. B. Sprachbefehle, werden die RFC 5646-Sprachcodes verwendet. Das Web Receiver SDK bietet ein Abfangtool EDIT_TRACKS_INFO, um die Anfragen in den Standard Ihres Manifests zu übersetzen:

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

Mit der API kann ein Entwickler neue Untertitel-Tracks dynamisch hinzufügen (in diesem Fall für verschiedene Sprachen und Out-of-Band-Tracks) und dann einen Track als neuen aktiven Track auswählen:

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

Wenn Sie Werbeunterbrechungen abspielen, bleibt die Textauswahl, die Sie vor der Unterbrechung vornehmen, z. B. die Sprache für denselben Content erhalten, auch wenn die Anzeigen in einer anderen Sprache verfasst sind.

Erzwungene Untertitel

Erzwungene Untertitel sind Text-Overlays, die dem Nutzer angezeigt werden, wenn alternative Ausdrücke verwendet werden, oder um die Tonqualität zu verdeutlichen. Im Gegensatz zu Untertiteln müssen Betrachter erzwungene Untertitel nicht automatisch aktivieren, da sie anhand der Audioeinstellungen des Zuschauers automatisch ausgewählt werden.

Wenn du erzwungene Untertitel zu deiner Cast-Anwendung hinzufügen möchtest, musst du sie als Teil deines Manifests einfügen. Legen Sie in Ihrem Manifest die Rolle des Tracks auf forced-subtitle fest. Wenn das Cask SDK diese Tracks abruft, werden sie als erzwungene Untertitel identifiziert. Es sind keine Maßnahmen für Absender erforderlich, da das Cast SDK erzwungene Untertitel von anderen trennt. Das bedeutet, dass Betrachter keine erzwungenen Untertitel auswählen können.

Wenn Untertitel aktiviert sind, sind erzwungene Untertitel deaktiviert, um eine Überschneidung von Untertiteln zu vermeiden. Wenn Untertitel im Manifest aktiviert sind und erzwungene Untertitel angezeigt werden, werden erzwungene Untertitel je nach der Audiosprache des Zuschauers angezeigt.