2014-02-16 41 views
2

我建立一个Chromecast应用,在这里我想从流媒体提供流.m3u8文件(HLS)请求.m3u8文件时。流媒体提供商不会将CORS标头添加到HTTP标头,这是构建Chromecast应用的必要条件。添加CORS头使用反向代理

有什么办法来路由通过代理请求,并代理添加必要的标头.m3u8文件? AFAICS,.m3u8文件进一步指向不同带宽流的文件,因此有必要让代理将适当的CORS头添加到这些文件的头文件中。

Here is an example of a link to a .m3u8 file我希望能够流。

回答

0

要回答我的问题: 这也不是没有可能转播流。 .m3u8文件是包含其他文件链接的文件,最终还包含二进制文件。所有这些(包括包含二进制文件的HTTP响应)都需要Chromecast的CORS标头才能显示内容。

如果你只希望CORS标头添加到文本响应corsproxy.com是一个很好的选择,一个长有几个可用的开源项目。

+1

corsproxy.com非常好,但它不工作了。是否有一个具有相同功能的替代服务器? – user4500

0

大多数供应商都有能力为他们的客户设置CORS。 Akamai当然会。

0

我已经能够通过添加许可文件CORS为桶权限从S3桶流HLS到CHROMECAST。

0

嘿,我意识到我有点晚了,但我想我会在这里发布,以防其他发现它有用。开发Chromecast应用程序时遇到同样的问题。我发现的简单解决方案是包含TOMODOkorz库,它将通过它的代理传递所有http请求。

您可以托管自己的代理并将库更改为相对容易地指向您的代理。

1

这实际上可以通过在Chromecast的Media Player Library内重写网址,并让这些子播放列表通过CORS代理(如http://www.corsproxy.com/)进行代理。

为此在您的自定义接收器,不要导入谷歌托管库
<script type="text/javascript" src="//www.gstatic.com/cast/sdk/libs/mediaplayer/0.5.0/media_player.js"></script>

而是直接复制模糊JavaScript到您的接收器的HTML页面,并执行以下操作:

g.D.url='http://www.corsproxy.com/' + k.replace(/^(?:[a-z]+:)?\/\//i,'')
  • 查找
    • 搜索+替换g.D.url=k +取代url:kurl:('http://www.corsproxy.com/' + k.replace(/^(?:[a-z]+:)?\/\//i,''))

    现在,如果你发送的初始内容识别一起的Chromecast http://www.corsproxy.com/YOUR_M3U8_FILE_HERE你应该有一个全功能的HLS-打Chromecast应用。

  • +0

    太棒了,谢谢!这解决了我获得大部分我想运行的HLS流的问题。但是,某些流需要HTTPS。任何解决这个问题的建议? – kristofferR

    +0

    你真的测试过这个解决方案吗?从我的调查看来,实际的二进制文件还需要添加CORS头文件,并且corsproxy.com似乎没有将这些头文件添加到.m3u8引用的文件中。 – hanspeide