Subtítulos en directo — SDK de Vonage Video para Windows

El SDK de OpenTok para Windows incluye métodos que permiten a los clientes de Windows publicar y recibir subtítulos en una sesión de OpenTok.

La subtitulación en directo debe activarse a nivel de sesión a través de la API REST.

Los subtítulos en directo sólo se admiten en sesiones enrutadas.

Este tema incluye las siguientes secciones:

Publicación de subtítulos en directo

Un editor de OpenTok puede iniciar o detener la publicación de subtítulos en directo en tiempo real configurando el 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.)

Suscribirse a los subtítulos en directo

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 de OpenTok no muestra el texto de los subtítulos en la interfaz de usuario. Añade un detector de eventos para el 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.
};

Cómo recibir tus propios subtítulos en directo

La Video API de Vonage 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 local) para que detecte los eventos de subtítulos. No muestres la vista de este suscriptor en la interfaz de usuario y no te suscribas a su audio (para evitar el eco). A continuación, puedes añadir el texto de los subtítulos a la interfaz de usuario.

Por defecto, el editor no publica los pies de foto, así que configura el PublishCaptions del objeto Editor a true:

    Publisher = new Publisher.Builder(context)
	{
		Capturer = capturerDevices[0].CreateVideoCapturer(VideoCapturer.Resolution.High, VideoCapturer.FrameRate.Fps30),
		Renderer = PublisherVideo
	}.Build();
	Publisher.PublishCaptions = true;

Suscríbete al canal en la página del editor Publisher.StreamCreated gestor de eventos:

private void Publisher_StreamCreated(object sender, Publisher.StreamEventArgs e)
{
	Console.WriteLine("Publisher_StreamCreated");
	Subscriber subscriber = new Subscriber.Builder(context, e.Stream)
	{
		Renderer = SubscriberVideo
	}.Build();
	subscriber.SubscribeToAudio = false;
	subscriber.SubscribeToVideo = true; // This is a workaround for an OpenTok bug.
	subscriber.SubscribeToCaptions = true;
	subscriberCallbacks.on_caption_text += Subscriber_OnCaptionText;

	selfPublisherStreamId = e.Stream;
}

Como se ha indicado anteriormente, debes suscribirte al canal de vídeo para poder ver los subtítulos. (Esto se solucionará en una versión futura.)

En este ejemplo se almacena el ID de la transmisión del editor en un selfPublisherStreamId variable, que aquí se utiliza para evitar que su vista se añada a la interfaz de usuario:

private void Subscriber_Connected(object sender, EventArgs e)
{
	if (e.Stream == selfPublisherStreamId) {
		return;
	}

	// Show other subscribers in the UI
}

El suscriptor dispone del texto transcrito (correspondiente a tu transmisión publicada) en la siguiente llamada de retorno:

public void Subscriber_CaptionText(object sender, Subscriber.CaptionTextArgs e) {
    // Adjust UI to show captions.
}