更改视频源(通过 setSrc() 方法)时,如何动态更改字幕的源文件(最初通过 <track> 元素在 HTML 中定义)?
换句话说,在播放视频时,我使用 setSrc() 方法来更改视频源,并且我还会重新定义链接的字幕文件 (SRT)。
更改视频源(通过 setSrc() 方法)时,如何动态更改字幕的源文件(最初通过 <track> 元素在 HTML 中定义)?
换句话说,在播放视频时,我使用 setSrc() 方法来更改视频源,并且我还会重新定义链接的字幕文件 (SRT)。
我设计的一个技巧是在字幕轨道上设置一个 ID
<track id="subtitles" kind="subtitles" src="subtitles.srt" srclang="en" />
然后在您需要的任何事件中,您可以使用:
$('#subtitles').attr('src', 'different_subtitles.srt');
player.findTracks();
player.loadTrack(0);
player.setSrc('different_video.mp4');
可能有一种更优雅的方式来解决这个问题,MediaElementJS 确实应该为此提供一个 API。但与此同时,这个技巧应该可以让你度过难关。
这并不适用于每个事件(如“结束”)。虽然此代码确实可以可靠地加载和更改 TRACK 源,但如果您已经显示了一种语言,它不会显示带有新视频的新“来源”TRACK,除非 CC 设置为 None 然后是一种语言。
另一种方法是删除整个video
元素并用一个新video
元素替换它的所有新track
元素。
您可以通过替换 的video
父元素的 innerHTML 来实现:
document.getElementById('videoparent').innerHTML='<video src="url-to-my-video.mp4" controls=""><track src="url-to-my-subtitle.vtt" default="" srclang="de" label="My subtitle"></video>';
至少在 Firefox 87 和 Chromium 89 中运行良好。