Titres

Pistes audio

Pour la sélection d'une piste audio, le SDK Web Receiver fournit une AudioTracksManager qui simplifie et rationalise la sélection des pistes, ce qui vous donne plus de contrôle et un meilleur accès aux propriétés, telles que le nom, l'URL et la langue. Ce cours est mieux utilisé dans le gestionnaire d'événements cast.framework.events.EventType.PLAYER_LOAD_COMPLETE .

L'API propose plusieurs méthodes pour interroger et sélectionner les pistes audio actives. Ici, Voici un exemple de procédure à suivre pour activer un canal en spécifiant son ID:

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

La classe AudioTracksManager fournit également une méthode getActiveTrack()

Voici un exemple illustrant comment sélectionner la première piste audio d'une (ici l'anglais) :

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

La classe AudioTracksManager fournit également une méthode getTracksByLanguage(language) qui renvoie toutes les pistes pour la langue spécifiée.

Le code de langue de l'audio est extrait du fichier manifeste multimédia et doit suivre RFC 5646. Les codes de langue peuvent être présentés sous forme de nomenclature à deux caractères (par exemple, "es", "en" ou "de"), ou d'une nomenclature à 4 caractères (par exemple, "en-us", "es-es" ou "fr-ca").

Si le fichier manifeste multimédia suit une norme de code de langue différente, L'application réceptrice doit la convertir en un code de langue conforme à la norme RFC 5646. Web Le SDK récepteur fournit un EDIT_AUDIO_TRACKS d'intercepteur pour effectuer modifications:

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

Lors de la lecture d'une coupure publicitaire, toute piste audio sélectionnée (langue, sont conservés avant la coupure publicitaire pour le même contenu, même si si les annonces sont dans une autre langue.

Sous-titres

Pour la sélection d'une piste de sous-titres, le SDK Web Receiver fournit le paramètre TextTracksManager qui simplifie et rationalise la sélection des pistes, ce qui vous donne plus de contrôle et un meilleur accès aux propriétés, telles que le nom, l'URL et la langue.

Il est préférable d'utiliser la classe TextTracksManager dans le gestionnaire d'événements pour cast.framework.events.EventType.PLAYER_LOAD_COMPLETE .

La sélection de sous-titres dans le SDK Web Receiver est simplifiée et optimisée avec d'autres parties du SDK.

L'API prend en charge le contrôle de WebVTT, TTML et CEA-608.

La classe TextTracksManager propose plusieurs façons d'interroger et de sélectionner un objet fermé la piste de sous-titres doit être active. Voici un exemple illustrant comment sélectionner la première piste en indiquant son identifiant:

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

La classe TextTracksManager fournit également une méthode getActiveTracks()

Voici un exemple illustrant comment sélectionner la première piste de texte pour un élément langue:

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

La classe TextTracksManager fournit également une méthode getTracksByLanguage(language) qui renvoie toutes les pistes pour la langue spécifiée.

Le code de langue du texte est extrait du fichier manifeste multimédia et doit suivre RFC 5646. Les codes de langue peuvent être présentés sous forme de nomenclature à deux caractères (par exemple, "es", "en" ou "de"), ou d'une nomenclature à 4 caractères (par exemple, "en-us", "es-es" ou "fr-ca").

Si le fichier manifeste multimédia suit une norme de code de langue différente, L'application réceptrice doit convertir toutes les requêtes entrantes vers cette norme. Ces telles que les commandes vocales, utilisent les codes de langue RFC 5646. Web Receiver Le SDK fournit un EDIT_TRACKS_INFO d'intercepteur pour traduire les requêtes dans votre standard du fichier manifeste:

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

L'API permet à un développeur d'ajouter dynamiquement de nouvelles pistes de sous-titres. pour différentes langues et pistes externes, puis sélectionnez une piste le nouveau canal actif:

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

Lors de la lecture d'une coupure publicitaire, toute sélection de piste textuelle (langue, par exemple) avant la coupure continue d'être conservée pour le même contenu, même si sont diffusées dans une autre langue.

Sous-titres forcés

Les légendes ou récits forcés sont des éléments textuels superposés qui s'affichent le spectateur peut comprendre quand une autre langue est utilisée ou pour clarifier l'audio. Contrairement aux sous-titres, les spectateurs n'ont pas besoin d'activer les sous-titres forcés, sont automatiquement sélectionnés en fonction des préférences audio de l'internaute.

Pour ajouter des sous-titres forcés à votre application Cast, vous devez les inclure en tant que de votre fichier manifeste. Dans votre fichier manifeste, définissez le rôle de la piste sur forced-subtitle Lorsque le SDK Cask récupère ces pistes, il identifie comme des sous-titres forcés. Aucune tâche n'est requise pour l'expéditeur, car le SDK Cast séparer les sous-titres forcés et les sous-titres. Cela signifie qu'un spectateur les sous-titres forcés.

Lorsque les sous-titres sont activés, ils sont désactivés pour empêcher les sous-titres se chevauchent. Lorsque les sous-titres sont désactivés et s'ils sont forcés sont fournies dans le fichier manifeste, les sous-titres forcés sont affichés en fonction la langue audio préférée du spectateur.