双重复标题串在我的自定义投接收器的应用程序,在我的mediaManager.onEditTracksInfo回调,我启用/禁用侧载标题如下:侧载VTT显示在Chromecast
mediaManager.onEditTracksInfo = function (event) {
if (!event.data || !event.data.activeTrackIds) {
return;
}
// if sideloaded tracks are available, show/hide those
if (sideloadedTracksAvailable) {
updateSideloadedTracksVisibility(event);
} else {
updateEmbeddedTracksVisibility(event);
}
onEditTracksInfoOrig(event);
};
updateSideloadedTracksVisibility = function (data) {
var mediaInformation = mediaManager.getMediaInformation() || {};
// disable currently enabled sideloaded TTML or VTT, if any
mediaPlayer.enableCaptions(false, cast.player.api.CaptionsType.TTML);
mediaPlayer.enableCaptions(false, cast.player.api.CaptionsType.WEBVTT);
enableActiveTracks(data.activeTrackIds, mediaInformation.tracks || []);
}
enableActiveTracks = function (activeTrackIds, tracks) {
// loops over tracks and if requested to be enabled calls
// mediaPlayer.enableCaptions(true, trackType, tracks[i].trackContentId);
}
下面是什么<video>
元素看起来就像接收器应用DOM中一样。只要sideloading轨道在onLoad()中加载到mediaManager中,track元素就会添加到DOM,并将src设置为tracks-array中第一个轨道的url。然后,无论何时,只要我使用trackI的activeId调用editTracksInfo,就会将一个新的轨道元素附加到<video>
eleement,并且每当我关闭字幕时都会被删除。
<video id="videoEl" src="blob:http%3A//blob-url-here" cast-captions-879553="true" crossorigin="anonymous">
<track src="http://vtt/url/here/file.vtt" id="1" label="undefined" srclang="en-US" kind="subtitles"></track>
<track src kind="captions"> <!-- this gets added upon enabling a track, and removed when disabling tracks -->
</video>
标题都工作正常,但我注意到,每当我切换到侧载VTT的TrackID,Chromecast的显示了两个标题内容相同流。这是一个已知的问题,或者是我的代码做错了什么?它只发生在sideloaded的vtt轨道上。 Sideloaded TTML和嵌入式vtt看起来很好。我检查了sideloaded vtt文件的内容,它没有重复的字幕字符串。
是您添加的第一个轨道元素? –
没有。跟踪元素都由接收器和MPL控制。 无论何时提供activeTrackId以启用字幕 - sideloaded或embedded,并在禁用字幕时被删除,都会添加/删除
看看https://github.com/googlecast/Cast-Player-Sample;它是我们的参考接收机,不会遇到您提到的问题;它也处理轨道,所以也许看着源头可以给你一个暗示,你在做什么不同。 –