如何在python中从HTTP流媒体服务器读取二进制流。我做了一个搜索,有人说urllib2可以完成这项工作,但有阻塞问题。有人建议使用Twisted框架。
我的问题是:
如果只是流媒体客户端在后台读取数据,我可以忽略urllib2引起的阻塞问题吗?
如果urllib2无法赶上流媒体服务器,会发生什么?数据会丢失吗?
如果流媒体服务器需要通过GET进行用户身份验证,或者在检索数据之前将一些参数传递给服务器,这可以通过urllib2完成吗?
我在哪里可以找到urllib2和Twisted的流客户端示例?
谢谢。
杰克
答案 0 :(得分:6)
要打败urllib2的内在缓冲,你可以这样做:
import socket
socket._fileobject.default_bufsize = 0
因为它是实际的socket._fileobject
缓冲在下面。无论如何都不会丢失任何数据,但是使用默认缓冲(一次8192个字节)数据可能会因实时流式传输而过度分块(完全删除缓冲可能会影响性能,但您可以尝试更小的块)。
对于Twisted,请参阅twisted.web2.stream及其中的许多链接。