Subtítulos en directo
Utilice la API de subtítulos en directo para transcribir secuencias de audio y generar subtítulos en tiempo real para su 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 Live Captions.
La función Live Captions sólo es compatible con sesiones enrutadas (sesiones que utilizan la función 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
Utilice el método del Client SDK para publicar audio en el servicio de subtítulos. Consulte 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:
Iniciar o detener la recepción de subtítulos en directo en un cliente web no afecta a los subtítulos recibidos por otros clientes conectados a la sesión.
Idiomas admitidos
Live Captions es compatible con varios idiomas. Introduzca el idioma deseado como languageCode al activar los subtítulos en directo con API REST:
"af-ZA"- Afrikaans"ar-AE"- Árabe, 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"- Holandé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, US"en-WL"- Inglés, galés"fa-IR"- persa"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"- Ucrania"vi-VN"- Vietnamita"zu-ZA"- Zulú
Casos prácticos
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 aumentar la comprensión del hablante en entornos no controlados, mejorando así el compromiso del usuario.
Los subtítulos en directo sólo están disponibles para las sesiones enrutadas (sesiones que utilizan la función Router multimedia).
Al activar la función Live Captions:
- 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).
- Utilice la API de subtitulado de audio del cliente para suscribirse a los subtítulos en directo de cada secuencia publicada.
- La elección de no recibir los subtítulos por parte de un abonado individual no afecta a la recepción de subtítulos por parte de otros abonados en otros clientes conectados a la sesión.
- Cuando finaliza la sesión (cuando todos los clientes han dejado de publicar secuencias en la sesión), puede detener explícitamente el subtitulado mediante la API Detener subtítulos. De lo contrario, los subtítulos de audio se detienen automáticamente después de la duración máxima (especificada al llamar a la API Iniciar API de subtítulos) ha expirado.
- 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 Cuenta Video API y seleccione el proyecto en la lista de proyectos del menú de la izquierda.
- En Configuración del proyectoencuentra Control de subtítulos en directo y haga clic en Configure.
- Envía la URL a la que se enviarán las llamadas de retorno.
Devoluciones de llamada seguras: Establecer un Secreto de firma para utilizar solicitudes de devolución de llamada de webhook seguras con devoluciones de llamada firmadas, utilizando el secreto de la firma. Consulte 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 updatedAt indica la hora a la que se ha detenido el subtitulado.streamUn objeto que contiene el ID del flujo y el estado del flujo subtitulado.languageCodeEl código de idioma BCP-47 utilizado.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 el subtitulado de audio en tiempo real de los editores y abonados 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 abonados reciben los subtítulos a través de captionReceived (mostrado arriba).
El objeto de evento captionReceived tiene dos properties:
- texto - El texto del pie de foto (una cadena)
- isFinal - Si el texto del pie de foto es final para una frase (
true) o parcial (false). El SDK de React Native no muestra el texto de los eventos captions. Puedes crear tu propio elemento UI para renderizar el texto de los subtítulos basado en eventos de subtítulos.
Recibir sus 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).
Puede añadir los subtítulos a la interfaz de usuario, como haría con los subtítulos de otros flujos. Consulte 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 será falso 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 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 abonado puede elegir comenzar o dejar de recibir subtítulos en directo.
Subscriber subscribeToCaptions Method
Un abonado puede iniciar o detener la recepción de subtítulos llamando a la función asíncrona subscribeToCaptions método. Este método acepta un 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 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 subtítulos a través de eventos. El SDK no muestra el texto de los eventos de subtítulos.
Subscriber captionReceived Event
Un abonado que esté suscrito activamente a 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 admite que un editor reciba eventos para sus propios subtítulos. Para mostrar los subtítulos del orador, crea un suscriptor oculto (al flujo del editor local) para escuchar los eventos de subtítulos. Este suscriptor no debe estar unido al DOM y no debe suscribirse al audio, para evitar el eco. A continuación, puede 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 pasadas a Session.subscribe()debido a un error.
Sample
En 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() 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 iniciar o detener la recepción de subtítulos llamando a la tecla 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 verificar si están suscritos activamente a los subtítulos en directo de una emisión utilizando el botón
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.
}
}
En hasCaptions() de un objeto Stream indica si el flujo tiene subtítulos:
boolean hasCaptions = stream.hasCaptions();
Aplicar la 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 para iOS de Vonage no admite que un editor reciba eventos para sus propios subtítulos. Para renderizar los subtítulos propios del orador, crea un suscriptor oculto (al flujo del editor) para escuchar 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, ajuste la propiedad a false:
subscriber.setSubscribeToCaptions = false
En 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.
}
Puede configurar un observador clave-valor para la función 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 para iOS de Vonage no admite que un editor reciba eventos para sus propios subtítulos. Para renderizar los subtítulos propios del orador, crea un suscriptor oculto (al flujo del editor) para escuchar 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, ajuste la propiedad a NO:
subscriber.setSubscribeToCaptions = NO;
En [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.
}
Puede configurar un observador clave-valor para la función 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 del objeto Editor:
publisher.PublishCaptions = true;
Si el editor no incluye una pista de audio, el PublisherKit.Error ,
con el ErrorCode del objeto ErrorEventArgs con el valor PublisherMissingAudioTrack.
El SDK para Windows de Vonage no admite que un editor reciba eventos para sus propios subtítulos. Para representar los subtítulos propios del orador, crea un suscriptor oculto (al flujo del editor) para escuchar 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 Suscriptor:
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, ajuste la propiedad a 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.
};
En HasCaptions de un objeto Stream indica si el flujo tiene subtítulos:
stream.HasCaptions;
En 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);
Puede llamar a esta función 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, pase OTC_FALSE en la función:
otc_subscriber_set_subscribe_to_captions(subscriber, OTC_FALSE);
Los suscriptores pueden verificar si están suscritos activamente a los subtítulos en directo de una emisión utilizando el botón
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() de la función otc_subscriber_callbacks instancia
para configurar un receptor 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;
En otc_stream_has_captions() informa de si un flujo tiene subtítulos:
otc_bool hasCaptions = otc_stream_has_captions(stream);
Aplicar la on_stream_has_captions_changed() de la función 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.
Vonage Linus SDK no admite que un editor reciba eventos para sus propios subtítulos. Para representar los subtítulos propios del orador, crea un suscriptor oculto (en el flujo del editor) para escuchar los eventos de subtítulos. (Ver 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);
Puede llamar a esta función 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, pase OTC_FALSE en la función:
otc_subscriber_set_subscribe_to_captions(subscriber, OTC_FALSE);
Los suscriptores pueden verificar si están suscritos activamente a los subtítulos en directo de una emisión utilizando el botón
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() de la función otc_subscriber_callbacks instancia
para configurar un receptor 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;
En otc_stream_has_captions() informa de si un flujo tiene subtítulos:
otc_bool hasCaptions = otc_stream_has_captions(stream);
Aplicar la on_stream_has_captions_changed() de la función 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 más especificaciones técnicas y preguntas frecuentes.
Véase este artículo de soporte de API de Vonage para obtener información sobre los precios de la API Live Captions.