2014-05-23 170 views
1

我试图让隐藏式字幕与我的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加载后不久删除?似乎有点哈克。任何帮助表示赞赏。

回答

0

需要在服务器端配置CORS,您需要在其上托管视频和轨道。

+0

是否有可能让CastRecieverPlayer将vtt文件添加到视频中而不托管它?只需下载vtt并插入? – alemac852

+0

您仍需要托管某处才能下载它。 –