【发布时间】:2013-02-26 17:45:40
【问题描述】:
我在我的视频流应用程序中使用了 twisted,HTML5 视频流在很大程度上依赖于字节范围进行清理......但 FileSender 似乎不支持字节范围(导致一些问题)。
以前我只是将所有内容传递给 Static.File.render_GET,它必须支持字节范围,但由于从那时起进行了一些更改,这不再可行。
request.setHeader('Content-Type','video/octet-stream')
print request.getAllHeaders()
self.isLeaf = False
#return static.File.render_GET(self,request)
f = open('.path/to/file.mp4','rb')
def cbFinished(ignored):
f.close()
request.finish()
d = FileSender().beginFileTransfer(f,request)
d.addErrback(err).addCallback(cbFinished)
return NOT_DONE_YET
如果请求的文件类型是“mp4”,则通过请求的代码,并且我收到如下错误:
<GET /file.mp4 HTTP/1.1>
{'range': 'bytes=66673263716-', 'host': '192.168.1.64:8000', 'accept': '*/*', 'user-agent': 'Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.52 (KHTML, like Gecko) NX/2.1.0.8.23 NintendoBrowser/1.1.0.7579.EU'}
Unhandled Error
Traceback (most recent call last):
Failure: exceptions.Exception: Consumer asked us to stop producing
Unhandled Error
Traceback (most recent call last):
Failure: exceptions.RuntimeError: Producer was not unregistered for file.mp4
<GET /file.mp4 HTTP/1.1>
{'range': 'bytes=69839914264-', 'host': '192.168.1.64:8000', 'accept': '*/*', 'user-agent': 'Mozilla/5.0 (Nintendo WiiU) AppleWebKit/534.52 (KHTML, like Gecko) NX/2.1.0.8.23 NintendoBrowser/1.1.0.7579.EU'}
这表明 WiiU 正在请求不同的字节范围,这让我认为这就是问题所在。 任何帮助将不胜感激,谢谢。
【问题讨论】:
-
为什么它“不再可行”?
-
我认为 Static.File 设置了一个路径,并期望每个请求都与它设置的路径相关,因为我需要提供可能位于我认为是静态的任何位置的文件。文件无法正常工作。
-
这听起来令人困惑,而且无论如何都不正确,我猜你从你的回答中猜到了:)。
标签: python http-headers twisted twisted.web