总结:我不知道如何在.mpd / shaka-player中添加(和显示)多个字幕选项。
我设置了一个网站,通过互联网提供视频,使用shaka-player库,以便谷歌浏览器用户可以观看它们。因此,使用以下教程,我可以设法部署一个简单的演示视频:
https://shaka-player-demo.appspot.com/docs/tutorial-player.html
在我的情况下,所有.mp4音频和视频文件(加密的),以及希腊语和英语(未加密)字幕的.vtt文件都在同一文件夹(web文件夹)中;根据上面提到的教程,在该文件夹中还有.mpd文件,用于加载视频。
根据上述教程,.mpd文件按以下方式加载:
// Construct a DashVideoSource to represent the DASH manifest.
var mpdUrl = 'https://turtle-tube.appspot.com/t/t2/dash.mpd';
var estimator = new shaka.util.EWMABandwidthEstimator();
var source = new shaka.player.DashVideoSource(mpdUrl, null, estimator);
// Load the source into the Player.
player.load(source);
我还使用以下.mdp文件添加了字幕支持:
<?xml version="1.0" encoding="utf-8"?>
<MPD xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="static" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG- DASH_schema_files/DASH-MPD.xsd" mediaPresentationDuration="PT7120S" maxSegmentDuration="PT10S" minBufferTime="PT10S" profiles="urn:mpeg:dash:profile:isoff-on-demand:2011" xmlns="urn:mpeg:dash:schema:mpd:2011">
<Period>
<AdaptationSet mimeType="video/mp4" minBandwidth="247684" maxBandwidth="848398" segmentAlignment="true" startWithSAP="1">
<ContentComponent id="1" contentType="video" />
<SegmentTemplate initialization="Video$RepresentationID$.mp4" media="Video$RepresentationID$-$Number$.mp4" duration="10" startNumber="1" />
<Representation id="0" bandwidth="247684" codecs="avc1.42c01e" />
<Representation id="1" bandwidth="511973" codecs="avc1.42c01e" />
<Representation id="2" bandwidth="848398" codecs="avc1.42c01e" />
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" />
<ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" />
</AdaptationSet>
<AdaptationSet mimeType="audio/mp4" minBandwidth="65311" maxBandwidth="65311" segmentAlignment="true" startWithSAP="1">
<ContentComponent id="1" contentType="audio" />
<SegmentTemplate initialization="Audio$RepresentationID$.mp4" media="Audio$RepresentationID$-$Number$.mp4" duration="10" startNumber="1" />
<Representation id="3" bandwidth="65311" codecs="mp4a.40.5" />
<ContentProtection schemeIdUri="urn:mpeg:dash:mp4protection:2011" value="cenc" />
<ContentProtection schemeIdUri="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed" />
</AdaptationSet>
<AdaptationSet contentType="text" lang="el" mimeType="text/vtt">
<Role value="main" />
<Representation id="4" bandwidth="1000">
<BaseURL>MySubtitle.el.vtt</BaseURL>
</Representation>
</AdaptationSet>
<AdaptationSet contentType="text" lang="en" mimeType="text/vtt">
<Representation id="5" bandwidth="1000">
<BaseURL>MySubtitle.en.vtt</BaseURL>
</Representation>
</AdaptationSet>
</Period>
</MPD>
在Google Chrome网络浏览器中我可以播放这部电影,我可以看到多个控件,如音量和“CC”,这意味着字幕;因此,当我按下“CC”时,我可以激活字幕;但是,我在.mpd文件(希腊语和英语)中配置了两个字幕语言,但按下“CC”控件,它只能激活或取消激活希腊语中的字幕(在.mpd文件中设置的第一个.vtt字幕文件上面),但我不知道如何激活或显示菜单来选择不同语言的字幕。
答案 0 :(得分:0)
前面提到的.mpd文件包含两个不同字幕语言的两个条目,它是正确的。选择一个副标题或另一个副标题的方法是使用以下方法:
getTextTracks()
selectTextTrack(id)
那是:
// Load the source into the Player.
player.load(source).then(function() {
var textTracks = player.getTextTracks();
console.log("TextTrack Len: " + textTracks.length);
// Selecting the second text track got from
// getTextTracks()
player.selectTextTrack(textTracks[1].id);
video.play();
});
当然,有必要将此逻辑添加到用户界面控件(HTML5)中,以便用户可以选择合适的字幕。
在播放器的工具栏中添加一个新控件(其中有音量控制,放大等)可能会很好,它会执行此功能,但我不知道如何添加它。 / p>
答案 1 :(得分:0)
您似乎无法在视频播放器的工具栏中添加更多选项;因此,您可以使用HTML添加菜单选项,然后调用shaka-player库的相应方法;比如“getTextTracks”,“selectTextTrack”,...