所以,基本上我正在制作一个网络流媒体服务,我使用带烧瓶的opencv在浏览器中传输网络摄像头视频:
def gen(camera):
frame = camera.get_frame()
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame.tobytes() + b'\r\n')
@app.route('/video_feed')
def video_feed():
return Response(gen(Camera()),
mimetype='multipart/x-mixed-replace; boundary=frame')
这很好用。现在,当用户查看网络摄像头时,我会生成一组数据(比如说面部点)。我想使用子进程将此数据流式传输到浏览器。这是我到目前为止所写的:
服务器端
@app.route('/yield')
def conso():
def inner():
proc = subprocess.Popen( # where L is the stream of data
L,
shell=True,
stdout=subprocess.PIPE
)
for line in iter(proc.stdout.readline,''):
time.sleep(1)
yield ( line.rstrip() + b'\r\n')
return Response(inner(), mimetype='text/event-stream')
客户端
<script>
if (!!window.EventSource) {
var source = new EventSource('/yield');
source.onmessage = function(e) {
$("#data").text(e.data);
}
}
</script>
<div id="data">nothing received yet</div>
但是无法传输任何数据。它没有给出任何错误。有人可以帮我确定问题所在。