同步化網路 VTT 字幕

在本主題中,您將學習如何設定 HLS 視訊的 WebVTT 字幕,以便將音訊和視訊與字幕同步化。

概覽

Web視頻文本軌道(WebVTT)文件是一個簡單的文本文件,用於將標題,字幕,說明等與視頻中的時間段相關聯。

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

有關添加 WebVTT 文件的詳細信息,請參閱為視頻添加字幕文檔。

添加元數據標題

作為 HLS 規範的一部分,您需要添加一個X-TIMESTAMP-MAP每個 WebVTT 標頭的元數據標頭,以便將音頻和視頻與字幕之間的時間戳同步。

如果您缺少此標頭或MPEGTS值不正確,您可能會看到字幕與視頻不同步。這是因為當X-TIMESTAMP-MAP缺少標頭,客戶端假定默認時間戳偏移量為0 .例如,使用值之間的區別9000000會導致您的字幕延遲 10 秒。

X-TIMESTAMP-MAP格式:

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

這是一個示例WebVTT文件:

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

有關詳細信息,請參閱字幕片段 Apple 的 HLS 協議文檔的一部分。

確定偏移值

如果您使用 Brightcove 的 Dynamic Ingest 或 Zencoder 來轉碼您的內容,請使用偏移值MPEGTS:900000 .

如果您使用的不是Zencoder編碼系統,則最好獲取所需的值。Apple建議您設置偏移量以匹配編碼的視頻。

MPEGTS值對應於給定的 MPEG 幀的呈現時間戳 (PTS) 值LOCAL時間。如果您使用的是 Brightcove 的遺留攝取系統,您可能會發現您可以使用以下值MPEGTS:0 .

如果您的帳戶啟用動態交付,並且您正在與我們一起託管字幕(非遠程字幕),然後我們將使一切自動神奇地工作(PTS 需要為零,我們將確保它是。)

如果您的帳戶啟用了動態交付並且您正在使用偏僻的字幕,您需要將 PTS 值設置為零。

例如,要獲取偏移值,您可以執行以下操作:

請求1:

在終端中,獲取HLS視頻並將其存儲在本地文件中。在這種情況下,我們將其命名為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"

要求2:

然後,使用ffprobe命令獲取偏移值。ffprobe是一個多媒體流分析器,它是FFmpeg框架 .您將需要下載並將其安裝在計算機上。

ffprobe -show_frames seg.ts

回應:

您的回應看起來應該類似於這樣:

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

最佳實務

當使用字幕開發應用程序時,以下準則應會有所幫助。

字幕時長

建議字幕時長不要超過視頻時長。這將防止字幕顯示或視頻播放完成後進度條中看不到的區域出現。