2014-03-05 17 views
5

Chromecast支持MPEG-DASH,Smooth Streaming和HLS以及媒體播放器庫中的流媒體:https://developers.google.com/cast/docs/player爲這些用例提供Javascript支持。如何啓用CORS以使用媒體播放器庫在Chromecast上進行流式傳輸?

由於Streaming協議與大多數基於文件的協議不同,它使用XMLHTTPRequest以異步方式訪問內容,因此它們可防止CORS頭從資源所源的服務器進行不適當的訪問。

有關如何在各種環境(如開發,生產,CDN,雲託管等)上啓用CORS以在Chromecast上進行流式傳輸的問題一直存在。如果SO社區可以全部投入以提供見解並分享您關於此主題的經驗。

回答

2

對於大多數CDN來說,此信息位於http://enable-cors.org/,但能夠看到所有CDN的信息會很高興。

3

要開始使用本主題,請記住媒體播放器庫創建的所有請求:https://developers.google.com/cast/docs/player使用GET或POST方法。就CORS而言,這些請求中的大多數都屬於簡單請求的類別(而不是所謂的預發請求)。欲瞭解更多詳情,請查看此鏈接:https://developer.mozilla.org/en-US/docs/HTTP/Access_control_CORS

要爲涉及清單,輔助清單,分段和加密密鑰的所有媒體內容設置CORS,如果您有權訪問服務器,則可以添加一個.htaccess文件,其中包含非常寬鬆的行:

頁眉設置訪問控制允許來源「*」

,或者您可以添加此行到您的Apache服務器的配置文件中的塊,然後重新啓動Apache服務器。您可以驗證相應的響應將有一個這樣的標題字段:

訪問控制允許來源:*·(CR)(LF)

如果用CDN的工作,你必須與他們合作並獲得必要的標題欄。

一旦您正確配置CORS,您將不會再看到可怕的網絡錯誤代碼:cast.player.api.ErrorCode.NETWORK了。

下面是提供CORS頭字段流的例子:

MPEG-DASH:
- http://commondatastorage.googleapis.com/gtv-videos-bucket/dash/BigBuckBunny/bunny_10s/BigBuckBunny_10s_isoffmain_url_relative_DIS_23009_1_v_2_1c2_2011_08_30.mpd - http://yt-dash-mse-test.commondatastorage.googleapis.com/media/car-20120827-manifest.mpd

平滑流: - http://playready.directtaps.net/smoothstreaming/SSWSS720H264/SuperSpeedway_720.ism/Manifest - http://playready.directtaps.net/smoothstreaming/SSWSS720H264PR/SuperSpeedway_720.ism/Manifest

但這HLS例如,下面的流不在其響應中提供CORS訪問控制 - 允許源頭字段。

http://devimages.apple.com.edgekey.net/streaming/examples/bipbop_16x9/bipbop_16x9_variant.m3u8

可以使用例如這個工具:http://web-sniffer.net/來嗅探頭。

+0

如果您的CDN提供商不立即滿足您的CORS請求,並且您被迫開始開發,您可以隨時爲您的CDN內容設置一個代理,作爲使Chromecast能夠進行流式傳輸的解決方法。只是不要在生產中這樣做,因爲你的代理可能會成爲瓶頸,併成爲單一故障點中最薄弱的環節。 –

+0

你知道任何支持CORS頭文件的公共m3u8流嗎?我嘗試了谷歌搜索沒有成功。 –

相關問題