2012-10-09 61 views
5

我已經設置了一點測試網站..我試圖實現一個HTML5視頻播放我正在開發的網站上,我想如果html5視頻不支持,請使用jplayer,以便它回落到swf文件。客戶端關閉連接時,從apache流媒體m4v與jplayer

http://dev.johnhunt.com.au/是我到目前爲止。如果我爲視頻提供http://www.jplayer.org/video/m4v/Big_Buck_Bunny_Trailer_480x270_h264aac.m4v,它工作正常,但如果我將它託管在我自己的服務器上,它根本就不會開始播放。

mime類型絕對正確,video/m4v。查爾斯代理說:

Client closed connection before receiving entire response 

逸岸,這裏的整個請求:

GET /Big_Buck_Bunny_Trailer_480x270_h264aac.m4v HTTP/1.1 
Host dev.johnhunt.com.au 
Cache-Control no-cache 
Accept-Encoding identity;q=1, *;q=0 
Pragma no-cache 
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4 
Accept */* 
Referer http://dev.johnhunt.com.au/ 
Accept-Language en-US,en;q=0.8 
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.3 
Cookie __utma=120066461.1007786402.1349773481.1349773481.1349786970.2; __utmb=120066461.1.10.1349786970; __utmc=120066461; __utmz=120066461.1349773481.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none) 
Range bytes=0- 

和響應:

Some binary data (maybe 3 or 4kbytes long) 

它看起來OK。我認爲'客戶'是我的Chrome瀏覽器..爲什麼它放棄?我怎樣才能解決這個問題?它的駕駛我瘋了,因爲我無法找到谷歌:(什麼

當我使用上jplayer.org的M4V文件是這樣的要求:

GET /video/m4v/Big_Buck_Bunny_Trailer_480x270_h264aac.m4v HTTP/1.1 
Host www.jplayer.org 
Cache-Control no-cache 
Accept-Encoding identity;q=1, *;q=0 
Pragma no-cache 
User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.79 Safari/537.4 
Accept */* 
Referer http://dev.johnhunt.com.au/ 
Accept-Language en-US,en;q=0.8 
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.3 
Cookie __utma=24821473.325705124.1349773077.1349773077.1349773077.1; __utmc=24821473; __utmz=24821473.1349773077.1.1.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided) 
Range bytes=0- 

響應:

Lots of binary data (very long.. working) 

乾杯, 約翰。

+0

注意,我寧願不使用jwplayer,因爲它不是開源的。 –

+0

附加說明:在開發工具的網絡選項卡下的Chrome中,我得到兩個視頻文件的請求,第一個請求狀態爲待處理,第二個狀態爲取消,兩個類型都處於掛起狀態,但取消狀態爲紅色。兩個尺寸都是13bytes,第二個是551ms。 –

回答

8

我發現,當Chrome瀏覽器發送一個「範圍:字節= 0〜」的要求,你不應該用「206部分內容」的反應做出迴應。要讓Chrome正確處理數據,您需要發回「200 OK」標題。

我不知道這是否是正確的根據規格,但它得到的Chrome工作並沒有出現,打破其他瀏覽器。

+1

確實,Chrome無法提供視頻,而其他人(Firefox和Safari)完美無缺。 –

+1

有一種方法可以在apache中更改此響應狀態,而不是創建攔截流並更改狀態碼的應用程序? –

+1

哇謝謝你的回答,我遇到了在android上編寫我自己的http服務器的完全相同的事情。返回200而不是216確實修復它! – Maks

0

可能是在Apache的一個問題...想必你使用的是Apache給出的標籤。

您是否已將mime類型添加到apache?

例如

將AddType視頻/ MP4 MP4

將AddType視頻/ MP4 M4V

還需要檢查的gzip被關閉的媒體......它已經被壓縮...不要gzip壓縮Jplayer。瑞士法郎。

你能發佈你的apache配置嗎?您是否使用任何流模塊,如this?

乾杯 羅賓

編輯

O和也你可能要接受-範圍字節的Apache。如果你仔細觀察兩個鏈接,你正在服務一個200,他們正在提供206個部分數據。

1

剛剛用Chrome瀏覽過,似乎您需要確保Content-Range標頭由您的服務器在響應中設置。

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

字節內容範圍規格值的例子,假設實體包含總共1234個字節:

 
     . The first 500 bytes: 
     bytes 0-499/1234 
     . The second 500 bytes: 
     bytes 500-999/1234 
     . All except for the first 500 bytes: 
     bytes 500-1233/1234 
     . The last 500 bytes: 
     bytes 734-1233/1234 
相關問題