Live-Untertitel – Vonage Video Windows SDK

Das OpenTok Windows SDK enthält Methoden, mit denen Windows-Clients in einer OpenTok-Sitzung Untertitel senden und empfangen können.

Die Live-Untertitelung muss auf Sitzungsebene über die REST-API.

Live-Untertitelung wird nur unterstützt in weitergeleitete Sitzungen.

Dieses Thema umfasst die folgenden Abschnitte:

Veröffentlichung von Live-Beschriftungen

Ein OpenTok-Publisher kann die Veröffentlichung von Echtzeit-Live-Untertiteln starten oder beenden, indem er die PublishCaptions Eigenschaft des Publisher-Objekts:

publisher.PublishCaptions = true;

Wenn der Verlag keine Tonspur anbietet, wird die PublisherKit.Error Ereignis ausgelöst wird, mit dem ErrorCode Eigenschaft des ErrorEventArgs-Objekts auf PublisherMissingAudioTrack.

Das Vonage Windows SDK unterstützt nicht, dass ein Herausgeber Ereignisse für seine eigenen Untertitel empfängt. Um die eigenen Untertitel des Sprechers zu rendern, erstellen Sie einen versteckten Abonnenten (für den Stream des Herausgebers), der auf die Untertitelereignisse hört. (Siehe den nächsten Abschnitt.)

Abonnieren von Live-Untertiteln

Ein Teilnehmer kann den Empfang von Untertiteln starten oder stoppen, indem er die Option SubscribeToCaptions Eigenschaft des Subscriber-Objekts:

subscriber.SubscribeToCaptions = true;

Sie können diese Eigenschaft unabhängig davon einstellen, ob der Herausgeber des Streams gerade Live-Untertitel veröffentlicht. Der Abonnent beginnt mit dem Empfang von Untertiteldaten, sobald der Herausgeber mit der Untertitel zu veröffentlichen.

Um keine Untertitel mehr zu erhalten, setzen Sie die Eigenschaft auf false:

subscriber.SubscribeToCaptions = false;

Abonnenten erhalten Untertitel über Ereignisse. Das OpenTok-SDK zeigt den Text der Untertitel nicht in der Benutzeroberfläche an. Fügen Sie einen Ereignis-Listener für das Subscriber.CaptionText Veranstaltung:

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

Die HasCaptions eines Stream-Objekts zeigt an, ob der Stream Untertitel hat:

stream.HasCaptions;

Die Session.StreamHasCaptionsChanged wird ausgelöst, wenn ein Stream Untertitel aktiviert und deaktiviert hat:

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

Eigene Live-Titel empfangen

Die Vonage Video API unterstützt es nicht, dass ein Publisher Ereignisse für seine eigenen Untertitel empfängt. Um die eigenen Untertitel des Sprechers darzustellen, erstellen Sie einen versteckten Subscriber (für den Stream des lokalen Publishers), der auf Untertitelereignisse wartet. Zeigen Sie die Ansicht dieses Abonnenten nicht in der Benutzeroberfläche an und abonnieren Sie dessen Audio nicht (um ein Echo zu vermeiden). Anschließend können Sie den Untertiteltext in die Benutzeroberfläche einfügen.

Der Publisher veröffentlicht standardmäßig keine Bildunterschriften. Legen Sie daher die PublishCaptions Eigenschaft des Publisher-Objekts auf true:

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

Den Stream im Kanal des Anbieters abonnieren Publisher.StreamCreated Ereignisbehandler:

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

Wie oben bereits erwähnt, müssen Sie das Video abonnieren, um Untertitel zu erhalten. (Dies wird in einer zukünftigen Version behoben.)

In diesem Beispiel wird die Stream-ID des Publishers in einer selfPublisherStreamId Variable, die hier verwendet wird, um zu verhindern, dass ihre Ansicht zur Benutzeroberfläche hinzugefügt wird:

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

	// Show other subscribers in the UI
}

Der Abonnent erhält den transkribierten Text (für Ihren veröffentlichten Stream) im folgenden Callback:

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