Итак, в основном я создаю службу потокового вещания и транслирую видео с веб-камеры в браузере, используя 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>
Ноне может передавать данные.Ни это не дает никаких ошибок.Может кто-нибудь помочь мне определить, где проблема.