Sous-titres en direct — SDK Windows pour Vonage Video

Le SDK OpenTok pour Windows comprend des méthodes permettant aux clients Windows de publier et de recevoir des sous-titres au cours d'une session OpenTok.

Le sous-titrage en direct doit être activé au niveau de la session via le API REST.

Le sous-titrage en direct n'est possible que dans les cas suivants sessions acheminées.

Cette rubrique comprend les sections suivantes :

Publication de sous-titres en direct

Un éditeur OpenTok peut activer ou désactiver la diffusion de sous-titres en direct et en temps réel en configurant le PublishCaptions de l'objet Publisher :

publisher.PublishCaptions = true;

Si l'éditeur n'inclut pas de piste audio, la PublisherKit.Error est déclenché, avec l'événement ErrorCode de l'objet ErrorEventArgs fixée à PublisherMissingAudioTrack.

Le SDK Windows de Vonage ne permet pas à un éditeur de recevoir des événements pour ses propres sous-titres. Pour rendre les propres sous-titres de l'orateur, créez un abonné caché (au flux de l'éditeur) pour écouter les événements de sous-titres. (Voir la section suivante.)

S'abonner aux sous-titres en direct

Un abonné peut commencer ou arrêter de recevoir des sous-titres en réglant le paramètre SubscribeToCaptions propriété de l'objet Abonné :

subscriber.SubscribeToCaptions = true;

Vous pouvez définir cette propriété, que l'éditeur du flux soit ou non en train de publier des des sous-titres en direct. L'abonné commencera à recevoir des données de sous-titrage dès que l'éditeur commencera à à publier des sous-titres.

Pour ne plus recevoir de sous-titres, réglez la propriété sur false:

subscriber.SubscribeToCaptions = false;

Les abonnés reçoivent les sous-titres via des événements. Le SDK OpenTok n'affiche pas le texte des sous-titres dans l'interface utilisateur. Ajoutez un écouteur d'événement pour le Subscriber.CaptionText événement :

subscriber.CaptionText += (object sender, Subscriber.CaptionTextArgs e) =>
{
	// Display the text in the UI.
};

Les HasCaptions d'un objet Stream indique si le flux comporte des sous-titres :

stream.HasCaptions;

Les Session.StreamHasCaptionsChanged est déclenché lorsqu'un flux a des sous-titres activés et désactivés :

session.StreamHasCaptionsChanged += (object sender, StreamEventArgs e) =>
{
	// Adjust UI to indicate that captions are or are not available.
};

Recevoir ses propres sous-titres en direct

La Video API Vonage ne permet pas à un éditeur de recevoir des événements concernant ses propres sous-titres. Pour afficher les sous-titres de l'intervenant lui-même, créez un abonné masqué (au flux de l'éditeur local) afin de détecter les événements de sous-titrage. N'affichez pas la vue de cet abonné dans l'interface utilisateur et ne vous abonnez pas à son flux audio (pour éviter l'écho). Vous pouvez ensuite ajouter le texte des sous-titres à l'interface utilisateur.

Par défaut, l'éditeur ne publie pas les légendes ; vous devez donc configurer le PublishCaptions de l'objet Publisher à true:

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

Abonnez-vous au flux sur le site de l'éditeur Publisher.StreamCreated gestionnaire d'événements :

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;
}

Comme indiqué ci-dessus, vous devez vous abonner à la vidéo pour bénéficier des sous-titres. (Ce problème sera corrigé dans une prochaine version.)

Cet exemple enregistre l'identifiant de flux de l'éditeur dans un selfPublisherStreamId variable, utilisée ici pour empêcher que sa vue ne soit ajoutée à l'interface utilisateur :

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

	// Show other subscribers in the UI
}

L'abonné dispose du texte transcrit (correspondant à votre flux publié) dans le callback suivant :

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