我正在构建一个Chromecast应用,我想从流媒体提供商处传输.m3u8文件(HLS)。流媒体提供商不会向HTTP标头添加CORS标头,这是构建Chromecast应用程序的必要条件。
有没有办法通过代理路由请求,并让代理为.m3u8文件添加必要的标头? AFAICS,.m3u8文件进一步指向不同bandwith流的文件,因此有必要让代理为这些文件的头部添加适当的CORS头。
答案 0 :(得分:1)
嘿,我意识到我有点迟了但我想我会发布在这里以防其他人发现它有用。在开发chromecast应用程序时遇到了同样的问题。我找到的简单解决方案是包含TOMODOkorz库,它将通过它的代理传递所有http请求。
您可以托管自己的代理并将库更改为相对容易指向您的代理。
答案 1 :(得分:1)
实际上,这可以通过重写Chromecast Media Player Library中的网址,并让这些子播放列表也通过http://www.corsproxy.com/等CORS代理进行代理。
要在自定义接收器中执行此操作,请不导入google托管的库
<击> <script type="text/javascript" src="//www.gstatic.com/cast/sdk/libs/mediaplayer/0.5.0/media_player.js"></script>
击>
相反,将混淆的javascript直接复制到您的接收器html页面中,并执行以下操作:
g.D.url=k
g.D.url='http://www.corsproxy.com/' + k.replace(/^(?:[a-z]+:)?\/\//i,'')
url:k
url:('http://www.corsproxy.com/' + k.replace(/^(?:[a-z]+:)?\/\//i,''))
现在,如果您使用http://www.corsproxy.com/YOUR_M3U8_FILE_HERE
向Chromecast发送初始 contentId ,那么您应该拥有一个功能齐全的HLS播放Chromecast应用。
答案 2 :(得分:0)
大多数提供商都能够为其客户设置CORS。 Akamai当然可以。
答案 3 :(得分:0)
我已经能够通过向存储桶的权限添加一个允许的CORS文件,将HLS从S3存储桶流式传输到ChromeCast。
答案 4 :(得分:0)
回答我自己的问题: 如果没有重播广播流,这是不可能的。 .m3u8文件是包含指向其他文件的链接的文件,最后还包含二进制文件。所有这些,包括包含二进制文件的HTTP响应,都需要Chromecast的CORS标头才能显示内容。
如果您只想将CORS标题添加到文本响应中corsproxy.com是一个很好的替代方案,那么有很多可用的开源项目。