Tracce audio
Per la selezione delle tracce audio, l'SDK Web Receiver fornisce una classe AudioTracksManager
che semplifica e ottimizza la selezione delle tracce, offrendoti un maggiore controllo e un migliore accesso alle proprietà, come nome, URL e lingua. Questa classe è consigliata per la gestione del gestore di eventi per cast.framework.events.EventType.PLAYER_LOAD_COMPLETE
.
L'API offre diversi modi per eseguire query e selezionare le tracce audio attive. Ecco un esempio di come selezionare una traccia da attivare specificando il relativo 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();
Il corso AudioTracksManager
fornisce anche un metodo
getActiveTrack()
.
Di seguito è riportato un esempio di come selezionare la prima traccia audio per una determinata lingua, 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 del linguaggio audio viene recuperato dal manifest multimediale e deve seguire RFC 5646. I codici lingua possono essere composti da una nomenclatura di due caratteri (ad esempio "es", "en" o "de") o di 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'applicazione Web Receiver deve convertirlo in un codice lingua conforme alla specifica RFC 5646. L'SDK del web
ricevitore fornisce un intercettore EDIT_AUDIO_TRACKS
per eseguire
le 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();
Quando riproduci le interruzioni pubblicitarie, qualsiasi traccia audio, ad esempio la lingua, creata prima di un'interruzione, rimarrà dopo l'interruzione per gli stessi contenuti, anche se gli annunci sono in una lingua diversa.
Sottotitoli (sottotitoli)
Per la selezione delle tracce dei sottotitoli codificati, l'SDK Web Receiver fornisce la classe TextTracksManager
che semplifica e ottimizza la selezione delle tracce, offrendoti un maggiore controllo e un migliore accesso alle proprietà, come nome, URL e lingua.
Per la classe TextTracksManager
è preferibile utilizzare il gestore di eventi per l'evento
cast.framework.events.EventType.PLAYER_LOAD_COMPLETE
.
La selezione dei sottotitoli codificati nell'SDK Web Receiver è semplificata e semplificata con altre parti dell'SDK.
L'API supporta il controllo di WebVTT, TTML e CEA-608.
Il corso TextTracksManager
offre diversi modi per eseguire query e selezionare una traccia di sottotitoli chiusa. Ecco un esempio di come selezionare la prima traccia da attivare specificando il relativo 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();
Il corso TextTracksManager
fornisce anche un metodo
getActiveTracks()
.
Di seguito è riportato un esempio di come selezionare la prima traccia di testo per una lingua specifica:
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 della lingua di testo viene recuperato dal manifest multimediale e deve seguire RFC 5646. I codici lingua possono essere composti da una nomenclatura di due caratteri (ad esempio "es", "en" o "de") o di 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'applicazione Web
Recipient deve convertire qualsiasi richiesta in entrata in tale standard. Queste
richieste, come i comandi vocali, utilizzano codici di lingua RFC 5646. L'SDK del ricevitore web
fornisce un intercettatore EDIT_TRACKS_INFO
per tradurre le richieste allo standard
del tuo manifesto:
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, in questo caso per lingue diverse e tracce fuori banda, quindi seleziona una traccia da impostare come 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 selezione di tracce di testo, come la lingua, effettuata prima di un'interruzione continuerà a essere disponibile per gli stessi contenuti, anche se gli annunci sono in un'altra lingua.
Sottotitoli forzati
I sottotitoli forzati o didascalie forzate sono overlay di testo visualizzati per consentire agli utenti di comprendere quando viene usata una lingua alternativa o di chiarire l'audio. A differenza dei sottotitoli codificati, uno spettatore non deve necessariamente attivare i sottotitoli forzati perché vengono selezionati automaticamente in base alle preferenze audio del visualizzatore.
Per aggiungere i sottotitoli forzati all'applicazione di trasmissione, devi includerli nel file manifest. Nel manifest, imposta il ruolo della traccia su forced-subtitle
. Quando l'SDK Cask raccoglie queste tracce, le identifica come forzati. Non è necessario alcun lavoro del mittente perché l'SDK Cast separa i sottotitoli forzati e i sottotitoli codificati. Ciò significa che uno spettatore non
potrà selezionare una didascalia forzata.
Quando sono attivi, i sottotitoli forzati vengono disattivati per evitare la sovrapposizione dei sottotitoli. Quando i sottotitoli codificati sono disattivati e se sono forniti nel video, i sottotitoli forzati vengono mostrati in base alla preferenza della lingua dell'audio dello spettatore.