雙重複標題串在我的自定義投接收器的應用程序,在我的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;它是我們的參考接收機,不會遇到您提到的問題;它也處理軌道,所以也許看着源頭可以給你一個暗示,你在做什麼不同。 –