2014-02-16 40 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