我試圖修改自定義Web服務器應用程序以使用HTML5視頻。HTML5視頻和部分範圍的HTTP請求
它提供一個基本的<video>
標記的HTML5頁面,然後它需要處理實際內容的請求。
到目前爲止,我唯一可以使用它的唯一方法是將整個視頻文件加載到內存中,然後通過單一響應將其發回。這不是一個實際的選擇。我想要一塊一塊地發送它:發回100 kb,並等待瀏覽器請求更多。
我看到下列頭的請求:
http_version = 1.1
request_method = GET
Host = ###.###.###.###:##
User-Agent = Mozilla/5.0 (Windows NT 6.1; WOW64; rv:16.0) Gecko/20100101 Firefox/16.0
Accept = video/webm,video/ogg,video/*;q=0.9,application/ogg;q=0.7,audio/*;q=0.6,*/*;q=0.5
Accept-Language = en-US,en;q=0.5
Connection = keep-alive
Range = bytes=0-
我試着發回的部分內容響應:
HTTP/1.1 206 Partial content
Content-Type: video/mp4
Content-Range: bytes 0-99999/232725251
Content-Length: 100000
我得到一些更多GET請求,如下
Cache-Control = no-cache
Connection = Keep-Alive
Pragma = getIfoFileURI.dlna.org
Accept = */*
User-Agent = NSPlayer/12.00.7601.17514 WMFSDK/12.00.7601.17514
GetContentFeatures.DLNA.ORG = 1
Host = ###.###.###.###:##
(沒有跡象表明瀏覽器需要該文件的任何特定部分。)無論我發送什麼文件k到瀏覽器,視頻不播放。
如上所述,如果我嘗試在同一個HTTP數據包中一次發送整個230 MB文件,同樣的視頻將正確播放。
有沒有什麼辦法可以很好的完成部分內容請求?我使用Firefox進行測試,但最終需要與所有瀏覽器協同工作。
我覺得很奇怪,你使用Firefox的測試和發送該Firefox不支持MP4文件,所以它應該不會起作用。 –
到目前爲止,我在瀏覽器端嘗試Firefox(帶H264插件)和IE9,以及服務器端的MP4和WebM。我想我錯過了一些東西。 – user434507
你爲什麼想要從客戶那裏獲得部分範圍的請求?只要讓他們問問他們想要什麼,然後以最方便的方式發給他們。我使用流式音頻(來自Chrome的請求)以及定製服務器 - 它實時發送聲音。我認爲這是默認和可接受的方式。如果您擔心網絡負載,請將節流降低到足以實現流暢視頻播放的速度。 – Stan