2010-05-20 120 views
1

我有一個本地運行的lighttpd服務器。如果我在服務器上加載一個靜態文件(通過html5音頻標籤),它播放和尋求罰款。尋求不使用HTML5音頻標記

但是,運行開發服務器(web.py/CherryPy)時尋找不起作用,或者如果我通過定義的動作url而不是靜態文件返回字節。它也不會加載持續時間。

根據this Opera Page中的「HTTP字節範圍請求」部分,這與支持字節範圍請求/部分內容響應有關。內容被視爲流式傳輸。

我不明白的是:

  • 如果瀏覽器下載它肯定可以顯示時間整個文件,並且它肯定可以尋求。
  • 我需要在Web服務器上啓用字節範圍請求(對於非靜態url)。

任何意見將非常感激地收到。

回答

0

谷歌告訴我你必須在CherryPy中使用字節範圍的靜態過濾器 - 但這隻適用於靜態文件。幸運的是this posting還包括有關如何做到這一點的非靜態數據:-)

1

這裏的指針是您獲得開始有些web.py代碼(正好需要這也跑進你的問題):

## experimental partial content support 
## perhaps this shouldn't be enabled by default 
range = web.ctx.env.get('HTTP_RANGE') 
if range is None: 
    return result 

total = len(result) 
_, r = range.split("=") 
partial_start, partial_end = r.split("-") 

start = int(partial_start) 

if not partial_end: 
    end = total-1 
else: 
    end = int(partial_end) 

chunksize = (end-start)+1 

web.ctx.status = "206 Partial Content" 
web.header("Content-Range", "bytes %d-%d/%d" % (start, end, total)) 
web.header("Accept-Ranges", "bytes") 
web.header("Content-Length", chunksize) 
return result[start:end+1]