Pistas de audio
Para la selección de pistas de audio, el SDK del receptor web proporciona un
AudioTracksManager
que simplifica y optimiza la selección de pistas, lo que te brinda más control
y un mejor acceso a propiedades, como el nombre, la URL y el idioma. Esta clase es
se recomienda su uso en el controlador de eventos para la
cast.framework.events.EventType.PLAYER_LOAD_COMPLETE
para cada evento.
La API ofrece varias maneras de consultar y seleccionar las pistas de audio activas. Aquí es un ejemplo de cómo seleccionar un segmento para que esté activo especificando su 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 clase AudioTracksManager
también proporciona un método
getActiveTrack()
Este es un ejemplo de cómo seleccionar la primera pista de audio para un idioma, en este caso, inglés:
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 clase AudioTracksManager
también proporciona un método
getTracksByLanguage(language)
que devuelve todas las pistas del idioma especificado.
El código de idioma del audio se recupera del manifiesto multimedia y debe seguir RFC 5646 Los códigos de idioma pueden presentarse con una nomenclatura de 2 caracteres (p. ej., “es”, “en” o "de"), o una nomenclatura de 4 caracteres (como "en-us", "es-es" o “fr-ca”).
Si el manifiesto multimedia sigue un estándar de código de idioma diferente, la Web
La app receptora debe convertirlo en un código de lenguaje de acuerdo con RFC 5646. En la Web
El SDK receptor proporciona un interceptor EDIT_AUDIO_TRACKS
para realizar
Modificaciones:
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();
Cuando se reproduce una pausa publicitaria, cualquier pista de audio seleccionada, como el idioma, realizados antes de una pausa persistirá después de esta para el mismo contenido, aun si de que los anuncios estén en un idioma diferente.
Subtítulos
Para la selección de pistas de subtítulos, el SDK del receptor web proporciona la
TextTracksManager
que simplifica y optimiza la selección de pistas, lo que te brinda más control
y un mejor acceso a propiedades, como el nombre, la URL y el idioma.
La clase TextTracksManager
se usa mejor en el controlador de eventos para la
cast.framework.events.EventType.PLAYER_LOAD_COMPLETE
para cada evento.
Se simplificó y agilizó la selección de subtítulos en el SDK del receptor web con otras partes del SDK.
La API admite el control de WebVTT, TTML y CEA-608.
La clase TextTracksManager
proporciona varias formas de consultar y seleccionar un sitio web cerrado
que la pista de subtítulos esté activa. Este es un ejemplo de cómo seleccionar la primera pista
estará activo especificando su 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 clase TextTracksManager
también proporciona un método
getActiveTracks()
Este es un ejemplo de cómo seleccionar la primera pista de texto para un idioma:
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 clase TextTracksManager
también proporciona un método
getTracksByLanguage(language)
que devuelve todas las pistas del idioma especificado.
El código de idioma de texto se recupera del manifiesto multimedia y debe seguir RFC 5646 Los códigos de idioma pueden presentarse con una nomenclatura de 2 caracteres (p. ej., “es”, “en” o "de"), o una nomenclatura de 4 caracteres (como "en-us", "es-es" o “fr-ca”).
Si el manifiesto multimedia sigue un estándar de código de idioma diferente, la Web
La app receptora debe convertir cualquier solicitud entrante a ese estándar. Estos
solicitudes, como los comandos por voz, usan códigos de idioma RFC 5646. El receptor web
El SDK proporciona un interceptor EDIT_TRACKS_INFO
para traducir las solicitudes a tu
manifiesto de Kubernetes:
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();
La API permite que un desarrollador agregue de forma dinámica nuevas pistas de subtítulos, en este para diferentes idiomas y pistas fuera de banda y, luego, selecciona una pista para ser el nuevo segmento activo:
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();
Cuando se reproduce el contenido de pausas publicitarias, se realiza cualquier selección de pistas de texto, como el idioma. antes de una pausa persistirá después de esta para el mismo contenido, aun si los anuncios están en un idioma diferente.
Subtítulos forzados
Los subtítulos forzados o la narrativa forzada son texto superpuesto que se muestra para que los usuarios pueden entender cuándo se usa un idioma alternativo o para aclarar el audio. A diferencia de los subtítulos, el espectador no necesita habilitar los subtítulos forzados, ya que se seleccionan automáticamente según las preferencias de audio del usuario.
Para agregar subtítulos forzados a tu aplicación de Cast, deberás incluirlos como
parte del manifiesto. En tu manifiesto, establece el rol de la pista en
forced-subtitle
Cuando el SDK de Cask detecte estos segmentos, los identificará
como subtítulos forzados. No se requiere trabajo de los remitentes, como lo hará el SDK de Cast.
separar los subtítulos forzados y los subtítulos ocultos. Esto significa que un usuario
seleccionar un subtítulo forzado.
Cuando se habilitan los subtítulos, se inhabilitan los subtítulos forzados para evitar lo siguiente: la superposición de los subtítulos. Cuando los subtítulos están desactivados y si son subtítulos forzados en el manifiesto, se muestran subtítulos forzados según la preferencia de idioma del audio del usuario.