私はビデオストリーミングアプリケーションの一部として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が異なるバイト範囲を要求していることを示しており、それが問題だと私は思います。どんな助けでもありがたいです、ありがとう。