我有一个在本地运行的 lighttpd 服务器。如果我在服务器上加载静态文件(通过 html5 音频标签),它会正常播放和搜索。
但是,在运行开发服务器 (web.py/CherryPy) 时或者如果我通过定义的操作 url 而不是作为静态文件返回字节时,搜索不起作用。它也不会加载持续时间。
根据 this Opera Page 中的“HTTP 字节范围请求”部分这与支持字节范围请求/部分内容响应有关。内容被视为流媒体。
我不明白的是:
- 如果浏览器确实下载了整个文件,它可以显示持续时间,当然可以搜索。
- 我需要在 Web 服务器上执行哪些操作才能启用字节范围请求(对于非静态 URL)。
如有任何建议,我们将不胜感激。
最佳答案
这是一些帮助您入门的 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]
关于http - 寻求在 HTML5 音频标签中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2871631/