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