ライブキャプション — Vonage Video Windows SDK
OpenTok Windows SDK には、Windows クライアントが OpenTok セッション内でキャプションを送信および受信するためのメソッドが含まれています。
ライブキャプションは、セッション単位で以下の設定を通じて有効にする必要があります。 REST API.
ライブキャプションは、以下の場合にのみサポートされます。 ルーティングセッション.
このトピックには以下のセクションが含まれます:
ライブキャプションの公開
OpenTokのパブリッシャーは、以下の設定を行うことで、リアルタイムのライブキャプションの配信を開始または停止することができます。
PublishCaptions プロパティを使用します:
publisher.PublishCaptions = true;
出版社がオーディオトラックを収録していない場合は PublisherKit.Error イベントがディスパッチされる、
で ErrorCode ErrorEventArgsオブジェクトのプロパティを PublisherMissingAudioTrack.
Vonage Windows SDKはパブリッシャーが自身のキャプションのイベントを受け取ることをサポートしていません。スピーカー自身のキャプションをレンダリングするには、(パブリッシャーのストリームに) キャプションイベントをリッスンする隠しサブスクライバーを作成します。(次のセクションを参照)。
ライブキャプションを購読する
購読者は、次のように設定することで、キャプションの受信を開始または停止することができます。 SubscribeToCaptions プロパティ
プロパティを使用する:
subscriber.SubscribeToCaptions = true;
このプロパティは、ストリームのパブリッシャーが現在ライブキャプションを公開しているかどうかに関係なく設定できます。 に関係なく設定できます。サブスクライバは、パブリッシャがキャプションの公開を開始すると、キャプションデータの受信を開始します。 キャプションデータの受信を開始します。
キャプションの受信を停止するには、プロパティを false:
subscriber.SubscribeToCaptions = false;
購読者はイベントを通じて字幕を受け取ります。OpenTok SDK では、UI に字幕のテキストは表示されません。
以下のイベントのリスナーを追加してください。 Subscriber.CaptionText イベントを開催する:
subscriber.CaptionText += (object sender, Subscriber.CaptionTextArgs e) =>
{
// Display the text in the UI.
};
について HasCaptions プロパティは、ストリームにキャプションがあるかどうかを報告します:
stream.HasCaptions;
について Session.StreamHasCaptionsChanged イベントは、ストリームでキャプションが有効または無効になったときにディスパッチされます:
session.StreamHasCaptionsChanged += (object sender, StreamEventArgs e) =>
{
// Adjust UI to indicate that captions are or are not available.
};
ライブキャプションの受信
Vonage Video API では、パブリッシャーが自身のキャプションに関するイベントを受信することはサポートされていません。話者自身のキャプションを表示するには、(ローカルパブリッシャーのストリームに対する)非表示のサブスクライバーを作成し、キャプションイベントをリッスンするようにしてください。 このサブスクライバーのビューを UI に表示したり、そのオーディオを購読したりしないでください(エコーを防ぐため)。その後、キャプションのテキストを UI に追加することができます。
Publisherではデフォルトでキャプションは公開されないため、 PublishCaptions パブリッシャー・オブジェクトの true:
Publisher = new Publisher.Builder(context)
{
Capturer = capturerDevices[0].CreateVideoCapturer(VideoCapturer.Resolution.High, VideoCapturer.FrameRate.Fps30),
Renderer = PublisherVideo
}.Build();
Publisher.PublishCaptions = true;
パブリッシャーのストリームを購読する Publisher.StreamCreated イベントハンドラ:
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;
}
前述の通り、字幕を表示するには動画の購読が必要です。(この問題は今後のバージョンで修正される予定です。)
この例では、パブリッシャーのストリーム ID を selfPublisherStreamId 変数。ここでは、そのビューがUIに追加されないようにするために使用されています:
private void Subscriber_Connected(object sender, EventArgs e)
{
if (e.Stream == selfPublisherStreamId) {
return;
}
// Show other subscribers in the UI
}
購読者は、以下のコールバックで(公開されたストリームの)文字起こしテキストを受け取ります:
public void Subscriber_CaptionText(object sender, Subscriber.CaptionTextArgs e) {
// Adjust UI to show captions.
}