Subtítulos en directo
Utiliza la API de subtítulos en directo para transcribir flujos de audio y generar subtítulos en tiempo real para tu aplicación.
La API de subtítulos en vivo de Vonage Video te permite mostrar subtítulos en vivo a los usuarios finales en una sesión de Vonage Video, usando un servicio de transcripción. Estamos utilizando AWS Transcribe como proveedor de transcripción. Dado que Live Captions captura el audio del enrutador de medios, también puede proporcionar los subtítulos para el audio de los participantes de marcado SIP.
Live Captions está activado por defecto para todos los proyectos, y es un producto basado en el uso. El uso de Live Captions se cobra en función del número de secuencias de audio de los participantes (o ID de secuencia) que se envían al servicio de transcripción. Para más información, consulte Normas de tarificación de la API de subtítulos en directo.
La función «Subtítulos en directo» solo está disponible en sesiones enrutadas (sesiones que utilizan el Router multimedia). Puedes enviar hasta 50 transmisiones de audio de una sola sesión de Vonage a la vez al servicio de transcripción para subtítulos.

Pasos para activar los subtítulos en directo
Utiliza el método del Client SDK para publicar audio en el servicio de subtítulos. Consulta Subtítulos en directo
En los clientes suscriptores, llame al método Client SDK correspondiente para que un suscriptor se suscriba a los subtítulos de un flujo.
Al iniciar el subtitulado en directo, transmite el audio de forma segura a un servicio de transcripción de audio de terceros, como Amazon Transcribe.
Utilice la API de subtítulos de los SDK cliente para activar o desactivar la recepción de subtítulos en directo en su aplicación:
El hecho de activar o desactivar la recepción de subtítulos en directo en un cliente web no afecta a los subtítulos que reciben los demás clientes conectados a la sesión.
Idiomas admitidos
La función «Subtítulos en directo» es compatible con varios idiomas. Indica el idioma deseado como languageCode opción al activar los subtítulos en directo con el API REST:
"af-ZA"- afrikáans"ar-AE"- Árabe, del Golfo"ar-SA"- Árabe moderno estándar"eu-ES"- Euskera"ca-ES"- catalán"zh-HK"- Chino simplificado"zh-CN"- Chino, cantonés"zh-TW"- Chino tradicional"hr-HR"- Croata"cs-CZ"- Checa"da-DK"- Danés"nl-NL"- Neerlandés"en-AU"- Inglés, australiano"en-GB"- Inglés, británico"en-IN"- Inglés, indio"en-IE"- Inglés, irlandés"en-NZ"- Inglés, Nueva Zelanda"en-AB"- Inglés, escocés"en-ZA"- Inglés, sudafricano"en-US"- Inglés (EE. UU.)"en-WL"- Inglés, galés"fa-IR"- farsi"fi-FI"- Finlandés"fr-FR"- Francés"fr-CA"- francés, canadiense"gl-ES"- Gallego"de-DE"- Alemán"de-CH"- Alemán, suizo"el-GR"- Griego"he-IL"- hebreo"hi-IN"- Hindi, indio"id-ID"- Indonesio"it-IT"- Italiano"ja-JP"- Japonés"ko-KR"- Coreano"lv-LV"- Letón"ms-MY"- Malayo"no-NO"- Noruego (Bokmål)"pl-PL"- Polaco"pt-PT"- Portugués"pt-BR"- Portugués, brasileño"ro-RO"- rumano"ru-RU"- Ruso"sr-RS"- serbio"sk-SK"- Eslovaco"so-SO"- Somalí"es-ES"- Español"es-US"- Español, US"sv-SE"- Sueco"tl-PH"- Tagalo/Filipino"th-TH"- Tailandia"uk-UA"- Ucraniano"vi-VN"- Vietnamita"zu-ZA"- Zulú
Casos de uso
Los subtítulos en directo pueden mejorar la experiencia y la participación de los usuarios de una aplicación. Los subtítulos mejoran la puntuación de accesibilidad de su aplicación, lo que a menudo se traduce en la participación de personas con discapacidad auditiva. Algunas leyes de todo el mundo exigen que las aplicaciones ofrezcan subtítulos.
Los subtítulos pueden facilitar la comprensión de lo que dice el interlocutor en entornos no controlados, lo que mejora la participación de los usuarios.
Los subtítulos en directo solo están disponibles para las sesiones enrutadas (sesiones que utilizan el Router multimedia).
Al activar la función «Subtítulos en directo»:
- Utilice la API de subtitulación de audio del cliente para iniciar la subtitulación de audio de cada secuencia publicada.
- El flujo de audio se envía a un servicio de transcripción de audio de terceros (AWS Transcribe).
- Utiliza la API de subtitulado de audio del cliente para suscribirte a los subtítulos en directo de cada transmisión publicada.
- El hecho de que un suscriptor decida no recibir los subtítulos no afecta a la recepción de los mismos por parte de otros suscriptores que utilicen otros clientes conectados a la sesión.
- Cuando la sesión haya finalizado (es decir, cuando todos los clientes hayan dejado de publicar flujos en la sesión), puedes detener explícitamente la generación de subtítulos mediante la API «Stop Captions». De lo contrario, la generación de subtítulos de audio se detendrá automáticamente tras la duración máxima (especificada al llamar a la Iniciar API de subtítulos) ha caducado.
- Los subtítulos en directo de una sesión finalizan durante la rotación del servidor. Puede reiniciar los subtítulos en directo en respuesta a eventos de notificación de rotación del servidor. Véase Rotación de servidores y migración de sesiones.
- Los subtítulos en directo se detienen automáticamente tras una duración máxima de 4 horas, pero puede configurar una duración máxima diferente llamando al botón Iniciar API de subtítulos. Al expirar, el subtitulado de audio se detendrá sin ningún efecto sobre la sesión en curso.
- Los subtítulos en directo finalizarán 60 segundos después de que el último cliente se desconecte de la sesión.
Actualizaciones del estado de los subtítulos en directo
Puedes configurar un webhook para recibir eventos cuando los subtítulos en directo se inicien, se detengan y fallen en una sesión.
- Vaya a su Account de la Video API y selecciona el proyecto de la lista de proyectos que aparece en el menú de la izquierda.
- En Configuración del proyectoencuentra Supervisión de subtítulos en directo y haga clic en Configure.
- Introduce la URL a la que se deben enviar las notificaciones.
Devoluciones de llamada seguras: Establecer un Secreto de firma para utilizar solicitudes de callback de webhook seguras con callbacks firmados, utilizando el secreto de firma. Véase Devoluciones de llamada seguras.
Cuando cambia el estado de los subtítulos en directo, se envía un HTTP POST a las URL de devolución de llamada. Si no se configura ninguna URL de devolución de llamada, no se envía ninguna actualización de estado. Los datos brutos de la solicitud HTTP son un mensaje codificado en JSON de la siguiente forma:
{
"captionId": "<captionsId>",
"applicationId": "<applicationId>",
"sessionId": "<sessionId>",
"status": "stopped",
"createdAt": 1651253477,
"updatedAt": 1651253837,
"duration": 360,
"stream": {
"streamId": "<streamId>",
"streamStatus": "stopped"
},
"languageCode": "en-US",
"reason": "Maximum duration exceeds.",
"provider": "aws-transcribe",
"status": "stopped",
"group": "captions"
}
El objeto JSON incluye las siguientes propiedades:
captionsIdEl ID único para la sesión de subtitulado de audio.applicationIdSu identificador único de solicitud de vídeo.sessionIdSesión de OpenTok para la que se han iniciado los subtítulos de audio.statusEstado actual de los subtítulos en directo."started"La plataforma Video API de Vonage ha asignado correctamente los recursos necesarios para enviar secuencias de audio para subtítulos."transcribing"El servicio de transcripción ha comenzado (y el subtitulado está en curso)."stopped"Se han detenido los subtítulos y se han eliminado todos los recursos."failed"El subtitulado no ha asignado los recursos necesarios o no ha enviado secuencias para el subtitulado.
createdAtLa marca de tiempo Unix (Epoch) en la que se ha iniciado el subtitulado de audio.updatedAtLa marca de tiempo Unix (Epoch) en la que se han actualizado los subtítulos de audio. Si elstatuses"stopped", el atributo «updatedAt» indica la hora en la que se ha detenido el subtitulado.streamUn objeto que contiene el identificador de la transmisión y el estado de la transmisión a la que se refiere el subtítulo.languageCodeSe utiliza el código de idioma BCP-47.reasonInformación de error adicional sobre el cambio de estado.providerEl proveedor de servicios externo utilizado para el subtitulado de audio:"aws-transcribe"Amazon Transcribe.
groupEl tipo de evento, que siempre se establece en "subtítulos" para los eventos de la API de subtítulos de audio.
Subtítulos en directo
Utiliza el API de subtítulos en directo para permitir la transcripción en tiempo real del audio de los editores y suscriptores conectados a una sesión.
Los subtítulos en directo deben activarse a nivel de sesión a través de la opción API REST.
Los subtítulos en directo sólo se admiten en sesión enrutada.
Publishing live captions
To enable live captions, initialize the `OTPublisher` component with the optional boolean `publishCaptions` property of the `properties` prop set to true:<OTPublisher
style={{width: 400, height: 300}}
properties={{
publishCaptions: true,
// ... other properties
}}
/>
Este ajuste es false por defecto.
Puede cambiar dinámicamente esta propiedad (basándose en un cambio de estado de React) para activar o desactivar los subtítulos de la secuencia publicada.
Subscribing to live captions
To start receiving captions, set the `subscribeToCaptions` property of the `properties` prop of the `OTSubscriber` component:<OTSubscriber
style={{width: 200, height: 200}}
properties={{
subscribeToCaptions: true,
// ... other properties
}}
eventHandlers={{
captionReceived: event => {
console.log('Caption received:', event.text);
console.log('Caption final:', event.isFinal);
},
}}
/>
Puede ajustar el subscribeToCaptions propiedad a true independientemente de si el cliente que publica el flujo está publicando actualmente subtítulos en directo. El suscriptor comenzará a recibir datos de subtítulos una vez que el editor comience a publicar subtítulos.
Los suscriptores reciben los subtítulos a través de la captionReceived (mostrado arriba).
El objeto de evento captionReceived tiene dos properties:
- texto — El texto del pie de foto (una cadena de caracteres)
- isFinal — Si el texto de la leyenda es definitivo para una frase (
true) o parcial (falso). El SDK de React Native no muestra el texto de los eventos de subtítulos. Puedes crear tu propio elemento de interfaz de usuario para mostrar el texto de los subtítulos basándote en los eventos de subtítulos.
Cómo recibir tus propios subtítulos en directo
El Vonage Client SDK no admite que un editor reciba eventos para sus propios subtítulos. Para renderizar subtítulos para un flujo publicado por el cliente local, crea un suscriptor oculto (al flujo del editor local) para escuchar los eventos de subtítulos. Establezca la propiedad subscribeToSelf de la propiedad OTSubscriber a true. No debe renderizar el vídeo de este abonado (configurando su width y height a 0) y no debe suscribirse al audio (para evitar el eco, configurando subscribeToAudio a falso).
Puedes añadir los subtítulos a la interfaz de usuario, igual que harías con los subtítulos de otras transmisiones. Consulta Representación personalizada de los abonados.
Enabling live captions
Un editor puede inicializarse con el booleano opcional publishCaptions parámetro. El parámetro se pasa a través de la función properties objeto. Este parámetro tendrá el valor «false» por defecto.
const publisher = OT.initPublisher({ publishCaptions: true });
Toggling live captions for a publisher dynamically
Una vez activados los subtítulos en directo, un editor puede iniciar o detener el envío de subtítulos llamando a la función publishCaptions método. Este método acepta un valor booleano como parámetro.
El código siguiente muestra un ejemplo de detención de subtítulos en directo para un editor.
publisher.publishCaptions(false);
El código siguiente muestra un ejemplo de inicio de subtítulos en directo para un editor.
publisher.publishCaptions(true);
Subscribing to live captions
Un suscriptor puede optar por activar o desactivar los subtítulos en directo.
Subscriber subscribeToCaptions Method
Un suscriptor puede activar o desactivar la recepción de subtítulos llamando al servicio asíncrono subscribeToCaptions método. Este método acepta un valor booleano como parámetro.
Este método puede invocarse independientemente de si el editor está publicando subtítulos en directo. El suscriptor comenzará a recibir datos de subtítulos una vez que el editor comience a publicar subtítulos.
El código siguiente muestra un ejemplo de inicio de subtítulos en directo para un abonado.
try {
await subscriber.subscribeToCaptions(true);
} catch (err) {
console.warn(err);
}
El código siguiente muestra un ejemplo de detención de subtítulos en directo para un abonado.
try {
await subscriber.subscribeToCaptions(false);
} catch (err) {
console.warn(err);
}
Enabling live captions for a subscriber
Los suscriptores pueden verificar si están suscritos activamente a los subtítulos en directo de un editor utilizando el botón isSubscribedToCaptions método. Este método no tiene parámetros y devuelve un valor booleano
const isSubscribed = subscriber.isSubscribedToCaptions()
console.log(`${isSubscribed} states whether or not a given subscriber is subscribing to live captions`).
Receiving live captions
Los suscriptores reciben los subtítulos a través de eventos. El SDK no muestra el texto de los eventos de subtítulos.
Subscriber captionReceived Event
Un suscriptor que esté suscrito activamente al servicio de subtítulos en directo enviará captionReceived eventos. En captionReceived tiene tres propiedades: caption, streamIdy isFinal. streamId es el ID del flujo, mientras que caption Es el texto transcrito. isFinal indica si se ha terminado de transcribir un subtítulo. Este valor sólo es relevante cuando se utilizan subtítulos parciales. El desarrollador puede elegir cómo y dónde mostrar el texto del subtítulo.
subscriber.on('captionReceived', function(event){
console.log(`Caption received for stream ${event.streamId}`);
console.log(`Caption text: ${event.caption}`);
console.log(`Final text: ${event.isFinal}`);
})
A continuación se muestran los registros de la consola cuando se utilizan subtítulos parciales y un editor dice "Esta es mi frase".
subscriber.on('captionReceived', function(event){
console.log(`The ${event.isFinal ? 'complete' : 'partial'} caption text is: "${event.caption}"`)
})
// The partial caption text is: "This"
// The partial caption text is: "This is"
// The partial caption text is: "This is my"
// The complete caption text is: "This is my sentence"
Receiving your own live captions
El Vonage Client SDK no permite que un editor reciba eventos relacionados con sus propios subtítulos. Para mostrar los subtítulos del propio locutor, crea un suscriptor oculto (al flujo del emisor local) para que escuche los eventos de subtítulos. Este suscriptor no debe estar vinculado al DOM ni suscribirse al audio, para evitar el eco. A continuación, puedes añadir los subtítulos a la interfaz de usuario.
A continuación se muestra la creación de un abonado oculto para que el editor reciba sus propios subtítulos.
const captionOnlySub = session.subscribe(
publisher.stream,
document.createElement('div'),
{
audioVolume: 0,
testNetwork: true, // This option is only needed in OpenTok.js versions below 2.25.1
},
);
captionOnlySub.on('captionReceived', (event) => {
// Do something with the event.caption
});
Nota: Para OpenTok.js 2.25.0 y versiones anteriores, es necesario configurar testNetwork a true en las opciones que se pasan a Session.subscribe()debido a un error.
Sample
El Muestras web de Vonage Muestra de Basic-Captions utiliza subtítulos en vivo en una aplicación web creada con Vonage Client SDK.
Publishing live captions
Un editor puede iniciar o detener la publicación de subtítulos en directo en tiempo real llamando a la función
setPublishCaptions() método del objeto PublisherKit:
publisher.setPublishCaptions(true);
Si el editor no incluye una pista de audio, el PublisherKit.PublisherListener.onError()
se llama con un error (con el método code del error establecida en PublisherMissingAudioTrack).
El SDK de Android no admite que un editor reciba eventos para sus propios subtítulos. Para renderizar los subtítulos propios del orador, cree un suscriptor oculto (al flujo del editor) para escuchar los eventos de subtítulos. (Véase la siguiente sección).
Subscribing to live captions
Un abonado puede activar o desactivar los subtítulos llamando al subscribeToCaptions() método
del objeto SubscriberKit:
subscriber.setSubscribeToCaptions(true);
Puede llamar a este método independientemente de si el editor de la secuencia está publicando actualmente subtítulos en directo. El suscriptor comenzará a recibir datos de subtítulos una vez que el editor comience a a publicar subtítulos.
Para dejar de recibir subtítulos, pase false en el método:
subscriber.setSubscribeToCaptions(false);
Los suscriptores pueden comprobar si tienen activado el servicio de subtítulos en directo de una retransmisión mediante el Verify
isSubscribedToCaptions() método:
boolean isSubscribed = subscriber.getSubscribeToCaptions();
Los suscriptores reciben los subtítulos a través de eventos. El SDK no muestra el texto de los subtítulos
en la interfaz de usuario. Utilice la función SubscriberKit.CaptionsListener para configurar un receptor de eventos de subtítulos:
SubscriberKit.CaptionsListener captionsListener = new SubscriberKit.CaptionsListener() {
@Override
public void onCaptionText(SubscriberKit subscriber, String text, boolean isFinal) {
// Display the text in the UI.
}
}
El hasCaptions() de un objeto Stream indica si el flujo tiene subtítulos:
boolean hasCaptions = stream.hasCaptions();
Implementar el onStreamHasCaptionsChanged() método del Session.StreamPropertiesListener
para controlar cuándo un flujo tiene subtítulos activados y desactivados:
Session.StreamPropertiesListener captioningListener = new Session.StreamPropertiesListener() {
@Override
public void onStreamHasCaptionsChanged(Session session, Stream stream, boolean hasCaptions) {
// Adjust UI to indicate that captions are or are not available.
}
}
Publishing live captions
Un editor puede iniciar o detener la publicación de subtítulos en directo en tiempo real configurando la opción
publishCaptions del objeto OTPublisherKit:
publisher.publishCaptions = true
Si el editor no incluye una pista de audio, el [PublisherKit publisher:didFailWithError:]
con el mensaje code del error establecida en OTPublisherMissingAudioTrack.
El SDK de Vonage para iOS no permite que un emisor reciba eventos relacionados con sus propios subtítulos. Para mostrar los subtítulos del propio locutor, crea un suscriptor oculto (al flujo del emisor) para que reciba los eventos de subtítulos. (Consulta la siguiente sección.)
Subscribing to live captions
Un abonado puede iniciar o detener la recepción de subtítulos configurando la opción subscribeToCaptions propiedad
del objeto OTSubscriberKit:
subscriber.subscribeToCaptions = true
Puede llamar a este método independientemente de si el editor de la secuencia está publicando actualmente subtítulos en directo. El suscriptor comenzará a recibir datos de subtítulos una vez que el editor comience a a publicar subtítulos.
Para dejar de recibir subtítulos, configura la propiedad en false:
subscriber.setSubscribeToCaptions = false
El OTSubscriberKitCaptionsDelegate(_:subscriber:caption:isFinal:) se envía cuando un
recibe subtítulos:
// OTSubscriberKitDelegate callbacks:
func subscriber(_ subscriber: OTSubscriberKit, caption text: NSString, isFinal final: Bool) {
// Display caption text in UI.
}
Puedes configurar un observador de clave-valor para el hasCaptions de un objeto OTStream
para ver cuándo el flujo tiene subtítulos habilitados y deshabilitados.
//add observer on a stream of interest
let hasCaptionsObservation: NSKeyValueObservation = subscriber.stream.observe(\.hasCaptions, options: [.old, .new]) { object, change in
guard let oldValue = change.oldValue else { return }
guard let newValue = change.newValue else { return }
print("KVO change for \(subscriber.stream.streamId) hasCaptions: \(newValue)")
//manipulate GUI element
}
Publishing live captions
Un editor puede iniciar o detener la publicación de subtítulos en directo en tiempo real configurando la opción
publishCaptions del objeto OTPublisherKit:
publisher.publishCaptions = YES;
Si el editor no incluye una pista de audio, el [PublisherKit publisher:didFailWithError:]
con el mensaje code del error establecida en OTPublisherMissingAudioTrack.
El SDK de Vonage para iOS no permite que un emisor reciba eventos relacionados con sus propios subtítulos. Para mostrar los subtítulos del propio locutor, crea un suscriptor oculto (al flujo del emisor) para que reciba los eventos de subtítulos. (Consulta la siguiente sección.)
Subscribing to live captions
Un abonado puede iniciar o detener la recepción de subtítulos configurando la opción subscribeToCaptions propiedad
del objeto OTSubscriberKit:
subscriber.subscribeToCaptions = YES;
Puede llamar a este método independientemente de si el editor de la secuencia está publicando actualmente subtítulos en directo. El suscriptor comenzará a recibir datos de subtítulos una vez que el editor comience a a publicar subtítulos.
Para dejar de recibir subtítulos, configura la propiedad en NO:
subscriber.setSubscribeToCaptions = NO;
El [OTSubscriberKitCaptionsDelegate subscriber:caption:isFinal:] se envía cuando un
recibe subtítulos:
// OTSubscriber delegate callbacks:
-(void) subscriber:(OTSubscriberKit *)subscriber caption:(NSString *)text isFinal:(BOOL)final {
// Display caption text in UI.
}
Puedes configurar un observador de clave-valor para el hasCaptions de un OTStream
para ver cuándo el flujo tiene subtítulos activados y desactivados:
//add observer on a stream of interest
[_subscriber.stream addObserver:self forKeyPath:@"hasCaptions" options:NSKeyValueObservingOptionNew context:NULL];
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
NSLog(@"KVO change for %@ = %@",keyPath, change);
//manipulate GUI element
}
Publishing live captions
Un editor puede iniciar o detener la publicación de subtítulos en directo en tiempo real configurando la opción
PublishCaptions propiedad del objeto Publisher:
publisher.PublishCaptions = true;
Si el editor no incluye una pista de audio, el PublisherKit.Error ,
con el ErrorCode propiedad del objeto ErrorEventArgs establecida en PublisherMissingAudioTrack.
El SDK de Vonage para Windows no permite que un emisor reciba eventos relacionados con sus propios subtítulos. Para mostrar los subtítulos del propio hablante, crea un suscriptor oculto (al flujo del emisor) para que escuche los eventos de subtítulos. (Consulta la siguiente sección.)
Subscribing to live captions
Un abonado puede iniciar o detener la recepción de subtítulos configurando la opción SubscribeToCaptions propiedad
del objeto «Subscriber»:
subscriber.SubscribeToCaptions = true;
Puede establecer esta propiedad independientemente de si el editor del flujo está publicando actualmente subtítulos en directo. El suscriptor comenzará a recibir datos de subtítulos una vez que el editor comience a a publicar subtítulos.
Para dejar de recibir subtítulos, configura la propiedad en false:
subscriber.SubscribeToCaptions = false;
Los suscriptores reciben los subtítulos a través de eventos. El SDK no muestra el texto de los subtítulos
en la interfaz de usuario. Añada un receptor de eventos para la función Subscriber.CaptionText evento:
subscriber.CaptionText += (object sender, Subscriber.CaptionTextArgs e) =>
{
// Display the text in the UI.
};
El HasCaptions La propiedad de un objeto Stream indica si el flujo tiene subtítulos:
stream.HasCaptions;
El Session.StreamHasCaptionsChanged cuando un flujo tiene subtítulos activados y desactivados:
session.StreamHasCaptionsChanged += (object sender, StreamEventArgs e) =>
{
// Adjust UI to indicate that captions are or are not available.
};
Publishing live captions
Un editor puede iniciar o detener la publicación de subtítulos en directo en tiempo real llamando a la función
otc_publisher_set_publish_captions() función:
otc_publisher_set_publish_captions(publisher, OTC_FALSE);
Si el editor no incluye una pista de audio, el otc_publisher_callbacks.on_error() devolución de llamada
con un error, con el código de error establecido en OTC_PUBLISHER_MISSING_AUDIO_TRACK.
El SDK para macOS de Vonage no admite que un editor reciba eventos para sus propios subtítulos. Para reproducir los subtítulos del orador, crea un suscriptor oculto (en el flujo del editor) para escuchar los eventos de subtítulos. (Véase la sección siguiente).
Subscribing to live captions
Un abonado puede iniciar o detener la recepción de subtítulos llamando a la tecla
otc_subscriber_set_subscribe_to_captions() función:
otc_subscriber_set_subscribe_to_captions(subscriber, OTC_TRUE);
Puedes llamar a esta función independientemente de si el emisor del flujo está publicando subtítulos en directo en ese momento. El suscriptor empezará a recibir datos de subtítulos en cuanto el emisor comience a publicar subtítulos.
Para dejar de recibir subtítulos, pase OTC_FALSE en la función:
otc_subscriber_set_subscribe_to_captions(subscriber, OTC_FALSE);
Los suscriptores pueden comprobar si tienen activado el servicio de subtítulos en directo de una retransmisión mediante el Verify
otc_subscriber_get_subscribe_to_captions() función:
otc_bool isSubscribed = otc_subscriber_get_subscribe_to_captions(subscriber);
Los suscriptores reciben los subtítulos a través de eventos. El SDK no muestra el texto de los subtítulos
en la interfaz de usuario. Establezca el on_caption_text() función de miembro de la otc_subscriber_callbacks ejemplo
para configurar un oyente de eventos de subtítulos:
static void on_caption_text(otc_subscriber *subscriber,
void *user_data,
const char* text) {
// Display the text in the UI.
}
subscriber_callbacks.on_caption_text = on_caption_text;
El otc_stream_has_captions() informa de si un flujo tiene subtítulos:
otc_bool hasCaptions = otc_stream_has_captions(stream);
Implementar el on_stream_has_captions_changed() función de miembro de la otc_session_callbacks
para supervisar cuándo un flujo tiene subtítulos activados y desactivados:
static void on_stream_has_captions_changed(otc_session* session,
void *user_data,
otc_stream *stream,
otc_bool has_captions) {
// Adjust UI to indicate that captions are or are not available.
}
session_callbacks.on_stream_has_captions_changed = on_stream_has_captions_changed;
Publishing live captions
Un editor puede iniciar o detener la publicación de subtítulos en directo en tiempo real llamando a la función
otc_publisher_set_publish_captions() función:
otc_publisher_set_publish_captions(publisher, OTC_FALSE);
Si el editor no incluye una pista de audio, el otc_publisher_callbacks.on_error() devolución de llamada
con un error, con el código de error establecido en OTC_PUBLISHER_MISSING_AUDIO_TRACK.
El SDK de Vonage Linus no permite que un emisor reciba eventos relacionados con sus propios subtítulos. Para mostrar los subtítulos del propio hablante, crea un suscriptor oculto (al flujo del emisor) para que escuche los eventos de subtítulos. (Consulta la siguiente sección.)
Subscribing to live captions
Un abonado puede iniciar o detener la recepción de subtítulos llamando a la tecla
otc_subscriber_set_subscribe_to_captions() función:
otc_subscriber_set_subscribe_to_captions(subscriber, OTC_TRUE);
Puedes llamar a esta función independientemente de si el emisor del flujo está publicando subtítulos en directo en ese momento. El suscriptor empezará a recibir datos de subtítulos en cuanto el emisor comience a publicar subtítulos.
Para dejar de recibir subtítulos, pase OTC_FALSE en la función:
otc_subscriber_set_subscribe_to_captions(subscriber, OTC_FALSE);
Los suscriptores pueden comprobar si tienen activado el servicio de subtítulos en directo de una retransmisión mediante el Verify
otc_subscriber_get_subscribe_to_captions() función:
otc_bool isSubscribed = otc_subscriber_get_subscribe_to_captions(subscriber);
Los suscriptores reciben los subtítulos a través de eventos. El SDK no muestra el texto de los subtítulos
en la interfaz de usuario. Establezca el on_caption_text() función de miembro de la otc_subscriber_callbacks ejemplo
para configurar un oyente de eventos de subtítulos:
static void on_caption_text(otc_subscriber *subscriber,
void *user_data,
const char* text) {
// Display the text in the UI.
}
subscriber_callbacks.on_caption_text = on_caption_text;
El otc_stream_has_captions() informa de si un flujo tiene subtítulos:
otc_bool hasCaptions = otc_stream_has_captions(stream);
Implementar el on_stream_has_captions_changed() función de miembro de la otc_session_callbacks
para supervisar cuándo un flujo tiene subtítulos activados y desactivados:
static void on_stream_has_captions_changed(otc_session* session,
void *user_data,
otc_stream *stream,
otc_bool has_captions) {
// Adjust UI to indicate that captions are or are not available.
}
session_callbacks.on_stream_has_captions_changed = on_stream_has_captions_changed;
Problemas conocidos
- Cuando un participante se silencia durante más de 15 segundos, se desconecta la conexión con el proveedor externo de transcripciones, para ahorrar costes de facturación. Los subtítulos pueden tardar entre 2 y 5 segundos en volver a conectarse.
Más información
Véase este artículo de soporte de API de Vonage para consultar más especificaciones técnicas y preguntas frecuentes.
Véase este artículo de soporte de API de Vonage para obtener información sobre las tarifas de la API de subtítulos en directo.