我试图让隐藏式字幕与我的ChromeCast自定义接收器应用程序一起工作。我已将CORS标题添加到我的CDN。不过,我遇到了障碍,当这些字幕托管在与我的接收器应用程序驻留在不同的存储区时,可以使用MP4视频文件正确加载字幕。正如在this example app中所做的那样,字幕在与接收方应用程序相同的来源托管时正确加载。Chromecast上的VTT字幕与MP4视频
我的发送者应用程序传递信息通过以下消息,以使字幕:
session.sendMessage('urn:x-cast:com.google.cast.sample.closecaption', message,
onSuccess, onError);
我的接收机应用中,在接收到该消息时,创建或接收器上的HTML指定适当的源取代了轨道元件。
trackElement.src = tracks[activeTrackLanguage];
不过,我得到以下错误:
Cross-origin text track load denied by Cross-Origin Resource Sharing policy.
做了一些研究之后,我发现了视频元素crossorigin
属性。所以,在我的接收机调试控制台我写了下面我的mp4视频已经载入后:
document.getElementById('player').setAttribute('crossorigin', 'anonymous');
然后,我送启用字幕消息,我想打的标题和它的工作!不幸的是,具有crossorigin
属性似乎阻止我的MP4的视频内容正确装载的,因为我得到了下面的错误尝试加载我的视频时:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'https://mysite.com' is therefore not allowed access.
此错误加载我的MP4的视频只有当我添加出现这种情况属性到我的视频元素。是否支持mp4视频的字幕/字幕?我的视频加载后需要添加crossorigin
属性,然后在我的vtt加载后不久删除?似乎有点哈克。任何帮助表示赞赏。
是否有可能让CastRecieverPlayer将vtt文件添加到视频中而不托管它?只需下载vtt并插入? – alemac852
您仍需要托管某处才能下载它。 –