我正在使用 rtmp 将流广播到服务器并使用 HLS 将视频流式传输到我的设备。是否有字幕协议可以实时更新字幕,例如服务器中有字幕文件,我可以继续写入该文件,我的播放器也可以继续读取该文件。
我知道 WebVTT 适用于录制的流媒体视频,但它适用于实时流媒体视频吗?我可以将我的播放器链接到 webVTT 文件,并且我可以通过继续写入来更新字幕吗?
我正在使用 rtmp 将流广播到服务器并使用 HLS 将视频流式传输到我的设备。是否有字幕协议可以实时更新字幕,例如服务器中有字幕文件,我可以继续写入该文件,我的播放器也可以继续读取该文件。
我知道 WebVTT 适用于录制的流媒体视频,但它适用于实时流媒体视频吗?我可以将我的播放器链接到 webVTT 文件,并且我可以通过继续写入来更新字幕吗?
您可以使用 WebVTT将字幕添加到实时 HLS 流中。您可以通过使用实时字幕播放列表来做到这一点。它就像一个实时播放列表一样工作——随着时间的推移,您可以从中添加和删除条目。
首先创建一个主播放列表并添加对您的字幕播放列表 ( subtitles.m3u8
) 的引用。这是一个(简化的)示例:
#EXTM3U
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subs",NAME="English",URI="subtitles.m3u8",LANGUAGE="en"
#EXT-X-STREAM-INF:BANDWIDTH=500000,RESOLUTION=1920x1080,SUBTITLES="subs"
prog_index.m3u8
下一步是在直播期间更新字幕播放列表。假设您的字幕播放列表最初看起来像这样:
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:10,
1.webvtt
#EXTINF:10,
2.webvtt
#EXTINF:10,
3.webvtt
请注意,#EXT-X-ENDLIST
播放列表中缺少该标签。这将导致播放器继续检索播放列表。
然后一段时间后(段持续时间)它将如下所示:
#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:2
#EXTINF:10,
2.webvtt
#EXTINF:10,
3.webvtt
#EXTINF:10,
4.webvtt
等等。您可能需要编写一些自定义代码来更新字幕播放列表。