Legendas em tempo real — SDK do Vonage Video para Windows
O SDK do OpenTok para Windows inclui métodos para que os clientes do Windows publiquem e recebam legendas em uma sessão do OpenTok.
A legenda em tempo real deve ser ativada no nível da sessão por meio do API REST.
A legenda em tempo real é compatível apenas em sessões encaminhadas.
Este tópico inclui as seguintes seções:
Publicação de legendas em tempo real
Um editor do OpenTok pode iniciar ou interromper a exibição de legendas ao vivo em tempo real configurando o
PublishCaptions propriedade do objeto Publisher:
publisher.PublishCaptions = true;
Se a editora não incluir uma faixa de áudio, o PublisherKit.Error o evento é disparado,
com o ErrorCode propriedade do objeto ErrorEventArgs definida como PublisherMissingAudioTrack.
O SDK do Vonage para Windows não permite que um emissor receba eventos relativos às suas próprias legendas. Para exibir as legendas do próprio locutor, crie um assinante oculto (no fluxo do emissor) para monitorar os eventos de legenda. (Consulte a próxima seção.)
Inscrever-se para receber legendas em tempo real
Um assinante pode ativar ou desativar a exibição de legendas configurando o SubscribeToCaptions propriedade
do objeto Subscriber:
subscriber.SubscribeToCaptions = true;
Você pode definir essa propriedade independentemente de o emissor do stream estar ou não publicando legendas em tempo real no momento. O assinante começará a receber os dados das legendas assim que o emissor começar a publicar as legendas.
Para deixar de receber legendas, defina a propriedade como false:
subscriber.SubscribeToCaptions = false;
Os assinantes recebem legendas por meio de eventos. O SDK do OpenTok não exibe o texto das legendas
na interface do usuário. Adicione um ouvinte de eventos para o Subscriber.CaptionText evento:
subscriber.CaptionText += (object sender, Subscriber.CaptionTextArgs e) =>
{
// Display the text in the UI.
};
O HasCaptions A propriedade de um objeto Stream indica se o stream possui legendas:
stream.HasCaptions;
O Session.StreamHasCaptionsChanged O evento é disparado quando as legendas de uma transmissão são ativadas ou desativadas:
session.StreamHasCaptionsChanged += (object sender, StreamEventArgs e) =>
{
// Adjust UI to indicate that captions are or are not available.
};
Como receber suas próprias legendas em tempo real
A Video API da Vonage não permite que um emissor receba eventos relativos às suas próprias legendas. Para exibir as legendas do próprio locutor, crie um assinante oculto (no fluxo do emissor local) para monitorar os eventos de legenda. Não exiba a visualização desse assinante na interface do usuário e não se inscreva no áudio dele (para evitar eco). Em seguida, você pode adicionar o texto das legendas à interface do usuário.
Por padrão, o Publisher não publica legendas; portanto, defina o PublishCaptions propriedade do objeto Publisher para true:
Publisher = new Publisher.Builder(context)
{
Capturer = capturerDevices[0].CreateVideoCapturer(VideoCapturer.Resolution.High, VideoCapturer.FrameRate.Fps30),
Renderer = PublisherVideo
}.Build();
Publisher.PublishCaptions = true;
Inscreva-se no feed do editor Publisher.StreamCreated manipulador 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;
}
Conforme mencionado acima, é necessário se inscrever no canal para receber as legendas. (Isso será corrigido em uma versão futura.)
Este exemplo armazena o ID do stream do editor em um selfPublisherStreamId variável, usada aqui para impedir que sua visualização seja adicionada à interface do usuário:
private void Subscriber_Connected(object sender, EventArgs e)
{
if (e.Stream == selfPublisherStreamId) {
return;
}
// Show other subscribers in the UI
}
O assinante recebe o texto transcrito (da sua transmissão publicada) na seguinte chamada de retorno:
public void Subscriber_CaptionText(object sender, Subscriber.CaptionTextArgs e) {
// Adjust UI to show captions.
}