Synchronisieren von WebVTT-Untertiteln

In diesem Thema erfahren Sie, wie Sie WebVTT-Untertitel für HLS-Videos konfigurieren, um Audio und Video mit den Untertiteln zu synchronisieren.

Überblick

Die Datei Web Video Text Tracks (WebVTT) ist eine einfache Textdatei, die verwendet wird, um Untertitel, Untertitel, Beschreibungen usw. mit Zeitsegmenten in Ihrem Video zu verknüpfen.

WEBVTT

  00:00:03.50 --> 00:00:05.000 align:middle line:84%
  In this video, you'll learn
  about how Video Cloud Studio is

Weitere Informationen zum Hinzufügen einer WebVTT-Datei finden Sie im Untertitel zu Videos hinzufügen dokumentieren.

Fügen Sie einen Metadaten-Header hinzu

Als Teil der HLS-Spezifikation müssen Sie ein X-TIMESTAMP-MAP Metadaten-Header an jeden WebVTT-Header, um Zeitstempel zwischen Audio und Video mit Ihren Untertiteln zu synchronisieren.

Wenn Sie diesen Header oder die MPEGTS Wenn der Wert nicht korrekt ist, stellen Sie möglicherweise fest, dass Ihre Untertitel nicht mit dem Video synchronisiert sind. Dies liegt daran, dass der Client bei fehlendem X-TIMESTAMP-MAP Header von einem Standard-Zeitstempel-Offset von 0 ausgeht. Der Unterschied zwischen der Verwendung eines Wertes von 900000 und 0 kann dazu führen, dass Ihre Untertitel um 10 Sekunden abweichen.

X-TIMESTAMP-MAP Format:

X-TIMESTAMP-MAP=MPEGTS:<MPEG-2 time>,LOCAL:<cue time>

Hier ist eine WebVTT-Beispieldatei:

WEBVTT
X-TIMESTAMP-MAP=MPEGTS:900000,LOCAL:00:00:00.000

1
00:00:03.500 --> 00:00:05.000 align:middle line:84%
In this video, you'll learn
about how Video Cloud Studio is

Einzelheiten finden Sie im Untertitelsegmente Abschnitt des HLS-Protokolldokuments von Apple.

Bestimmen Sie den Offset-Wert

Wenn Sie Dynamic Ingest oder Zencoder von Brightcove zum Transkodieren Ihrer Inhalte verwenden, verwenden Sie einen Offset-Wert von MPEGTS:900000.

Wenn Sie ein anderes Kodierungssystem als Zencoder verwenden, ist es am besten, den benötigten Wert zu ermitteln. Apple empfiehlt, dass Sie den Versatz so einstellen, dass er mit Ihrem codierten Video übereinstimmt.

Die MPEGTS value entspricht dem Präsentationszeitstempelwert (PTS) des MPEG-Frames zum gegebenen LOCAL Zeit. Wenn Sie das ältere Aufnahmesystem von Brightcove verwenden, können Sie möglicherweise einen Wert von verwenden MPEGTS:0.

Wenn dein Konto für Dynamic Delivery aktiviert ist und du Untertitel bei uns hostest (keine Remote-Untertitel), sorgen wir dafür, dass alles automatisch funktioniert (PTS muss Null sein und wir werden dafür sorgen, dass es so ist.)

Wenn Ihr Konto für Dynamic Delivery aktiviert ist und Sie verwenden Fernbedienung Untertitel müssen Sie den PTS-Wert auf Null setzen.

Um beispielsweise den Offset-Wert abzurufen, können Sie Folgendes tun:

Anfrage 1:

Holen Sie sich im Terminal ein HLS-Video und speichern Sie es in einer lokalen Datei. In diesem Fall nennen wir es seg.ts.

curl -o seg.ts "http://brightcove.vo.llnwd.net/v1/unsecured/media/4360108595001/201507/1154/4360341622001/4360108595001_4360341622001_s-1.ts?pubId=4360108595001&videoId=4360283683001"

Anfrage 2:

Verwenden Sie dann die ffprobe Befehl, um den Offset-Wert zu erhalten. ffprobe ist ein Multimedia-Stream-Analyzer, der Teil der FFmpeg-Framework. Sie müssen diese herunterladen und auf Ihrem Computer installieren.

ffprobe -show_frames seg.ts

Antwort:

Ihre Antwort sollte ungefähr so aussehen:

pkt_pts=900000
pkt_pts_time=10.000000
pkt_dts=900000
pkt_dts_time=10.000000

Empfohlene Vorgehensweise

Die folgenden Richtlinien sollen Ihnen bei der Entwicklung Ihrer App mit Untertiteln helfen.

Untertiteldauer

Es wird empfohlen, dass die Untertiteldauer die Videodauer nicht überschreitet. Dadurch wird verhindert, dass Untertitel angezeigt werden oder ein nicht durchsuchbarer Bereich in der Fortschrittsleiste angezeigt wird, nachdem die Videowiedergabe abgeschlossen ist.