我有一个提供mjpeg流(https://blog.miguelgrinberg.com/post/video-streaming-with-flask/page/3)的简单流媒体服务器。通过浏览器访问mjpeg数据时,它按预期工作。我看到了一个网络摄像头流。
如果我通过python执行get请求(使用python请求:http://requests.readthedocs.io/)我既没有得到任何响应(也使用Insomnia REST Client测试),也没有得到状态代码/异常。
requests.get(url)
我想要做的是编写一个代理脚本(在python中),它只是转发mjpeg流。
答案 0 :(得分:0)
requests
库可能不是转发视频流的正确选项,因为您必须获取一大块视频,然后以某种方式将其解释为视频然后将其转换为流你可以把它放在网络上此外,您的视频可能不会通过HTTP进行流式传输,这是协议requests.get
支持的。最好的选择是简单地将您的计算机设置为代理服务器:http://www.aboutdebian.com/proxy.htm,这样一个数据包基本上可以写入套接字并从套接字读取,只需重写高层信息,例如发送数据包的位置,而不必解释数据包的内容。
也就是说,如果你真的想要做你的建议,并且在不太可能的情况下,视频以某种方式通过HTTP进行流式传输,你需要stream=True
stream = requests.get(url, stream=True)
if stream.ok:
chunk_size = 1024
for chunk in stream.iter_content(chunk_size=chunk_size):
interpret_video_and_write_to_socket_somehow(chunk, blocking=True)