Tracce

Tracce audio

Per la selezione delle tracce audio, l'SDK WebRicevir fornisce una AudioTracksManager che semplifica e snellisce la selezione dei percorsi, offrendoti un maggiore controllo e un migliore accesso a proprietà come nome, URL e lingua. Questo corso è meglio utilizzato nel gestore di eventi cast.framework.events.EventType.PLAYER_LOAD_COMPLETE .

L'API offre vari modi per eseguire query e selezionare le tracce audio attive. Qui Ecco un esempio di come selezionare una traccia da attivare specificando l'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 fornisce anche un metodo getActiveTrack()

Ecco un esempio di come selezionare la prima traccia audio di un in questo caso l'inglese:

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 fornisce anche un metodo getTracksByLanguage(language) che restituisce tutte le tracce per la lingua specificata.

Il codice della lingua audio viene recuperato dal file manifest multimediale e deve seguire RFC 5646. I codici lingua possono essere presentati con una nomenclatura a due caratteri (come "es", "it" o "de") o una nomenclatura a quattro caratteri (ad es. "en-us", "es-es" o "fr-ca").

Se il file manifest multimediale segue uno standard di codice lingua diverso, L'app del ricevitore deve convertirla in un codice lingua conforme a RFC 5646. A rete L'SDK ricevitore fornisce un intercettore EDIT_AUDIO_TRACKS da eseguire modifiche:

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

Durante la riproduzione delle interruzioni pubblicitarie, qualsiasi traccia audio selezionata, come lingua, effettuate prima di un'interruzione; persisterà dopo l'interruzione per gli stessi contenuti, anche se gli annunci sono in una lingua diversa.

Sottotitoli codificati

Per la selezione delle tracce di sottotitolaggio codificato, l'SDK WebRicevir fornisce il TextTracksManager che semplifica e snellisce la selezione dei percorsi, offrendoti un maggiore controllo e un migliore accesso alle proprietà, come nome, URL e lingua.

La classe TextTracksManager viene utilizzata al meglio nel gestore di eventi per cast.framework.events.EventType.PLAYER_LOAD_COMPLETE .

La selezione dei sottotitoli codificati nell'SDK Web receiver è più semplice e intuitiva con altre parti dell'SDK.

L'API supporta il controllo di WebVTT, TCFL e CEA-608.

La classe TextTracksManager offre vari modi per eseguire query e selezionare un modello la traccia sottotitoli sia attiva. Ecco un esempio di come selezionare la prima traccia ad essere attivo specificandone l'ID:

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 fornisce anche un metodo getActiveTracks()

Ecco un esempio di come selezionare la prima traccia di testo per una specifica lingua:

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 fornisce anche un metodo getTracksByLanguage(language) che restituisce tutte le tracce per la lingua specificata.

Il codice lingua del testo viene recuperato dal manifest multimediale e deve seguire RFC 5646. I codici lingua possono essere presentati con una nomenclatura a due caratteri (come "es", "it" o "de") o una nomenclatura di quattro caratteri (ad esempio "en-us", "es-es" o "fr-ca").

Se il file manifest multimediale segue uno standard di codice lingua diverso, L'app ricevente deve convertire tutte le richieste in entrata in quello standard. Questi come i comandi vocali, utilizzano i codici lingua RFC 5646. Il ricevitore web L'SDK fornisce un intercettore EDIT_TRACKS_INFO per tradurre le richieste nella tua del file manifest:

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 consente a uno sviluppatore di aggiungere dinamicamente nuove tracce di sottotitoli codificati, per diverse lingue e tracce fuori banda, quindi seleziona una traccia essere la nuova traccia attiva:

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

Durante la riproduzione delle interruzioni pubblicitarie, qualsiasi traccia di testo selezionata, ad esempio la lingua, prima che un'interruzione venga riportata dopo l'interruzione per gli stessi contenuti, anche se gli annunci siano in una lingua diversa.

Sottotitoli codificati forzati

I sottotitoli codificati forzati o la narrazione forzata sono overlay di testo che vengono visualizzati in modo che lo spettatore può capire quando viene utilizzata una lingua alternativa o per chiarire l'audio. A differenza dei sottotitoli codificati, lo spettatore non ha bisogno di attivare i sottotitoli forzati mentre vengono selezionati automaticamente in base alle preferenze audio dello spettatore.

Per aggiungere sottotitoli forzati all'applicazione Cast, devi includerli come parte del file manifest. Nel file manifest, imposta il ruolo della traccia su forced-subtitle. Quando l'SDK Cask raccoglie queste tracce, identificherà come sottotitoli forzati. Non è necessario alcun intervento da parte del mittente, in quanto l'SDK Cast separando i sottotitoli forzati da quelli forzati. Ciò significa che uno spettatore non poter selezionare una didascalia forzata.

Quando i sottotitoli codificati sono attivati, i sottotitoli forzati sono disattivati per evitare sovrapposizione di didascalie. Quando i sottotitoli codificati sono disattivati e se forzati sono forniti nel file manifest, quindi vengono visualizzati i sottotitoli forzati in base la preferenza della lingua per l'audio dello spettatore.