Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 让多个用户在Flask中传输网络摄像头_Python_Flask_Video Streaming_Picamera - Fatal编程技术网

Python 让多个用户在Flask中传输网络摄像头

Python 让多个用户在Flask中传输网络摄像头,python,flask,video-streaming,picamera,Python,Flask,Video Streaming,Picamera,我已经使用Flask框架编写了一个用python编写的。我试图在网站上显示一个实时视频流,但似乎只有一个客户端可以流视频,甚至流在30秒后失败 该网站部署在raspberry pi上,有3名工作人员,因此我理解他们不可能同时从相机读取帧。这就是为什么我使用了一个我在网上找到的方法,尽管结果如上所述 这是我的代码的相关部分: from flask import Flask, render_template, url_for, request, escape, Response import pic

我已经使用Flask框架编写了一个用python编写的。我试图在网站上显示一个实时视频流,但似乎只有一个客户端可以流视频,甚至流在30秒后失败

该网站部署在raspberry pi上,有3名工作人员,因此我理解他们不可能同时从相机读取帧。这就是为什么我使用了一个我在网上找到的方法,尽管结果如上所述

这是我的代码的相关部分:

from flask import Flask, render_template, url_for, request, escape, Response
import picamera 
from camera import CameraStream
import cv2

app = Flask(__name__)

cap = CameraStream().start()

def gen_frame():
"""Video streaming generator function."""
    while cap:
        frame = cap.read()
        convert = cv2.imencode('.jpg', frame)[1].tobytes()
        yield (b'--frame\r\n'
           b'Content-Type: image/jpeg\r\n\r\n' + convert + b'\r\n') # concate frame one by one and show result


@app.route("/video_feed")
def video_feed():
    return Response(gen_frame(), mimetype='multipart/x-mixed-replace; boundary=frame')
摄像头模块是我提到的同步方法()的副本

让多个客户端连接并尝试流式传输我的相机后,我获得的日志:

Jan 03 17:46:41 raspberrypi gunicorn[1567]:   File "/usr/lib/python2.7/dist-
packages/werkzeug/wrappers.py", line 82, in _iter_encoded
Jan 03 17:46:41 raspberrypi gunicorn[1567]:     for item in iterable:
Jan 03 17:46:41 raspberrypi gunicorn[1567]:   File "/home/pi/Desktop/python_scripts/internetdisplay/app.py", line 23, in gen_frame
Jan 03 17:46:41 raspberrypi gunicorn[1567]:     frame = cap.read()
Jan 03 17:46:41 raspberrypi gunicorn[1567]:   File "/home/pi/Desktop/python_scripts/internetdisplay/camera.py", line 31, in read
Jan 03 17:46:41 raspberrypi gunicorn[1567]:     frame = self.frame.copy()
Jan 03 17:46:41 raspberrypi gunicorn[1567]: AttributeError: 'NoneType' object has no attribute 'copy'
Jan 03 17:46:54 raspberrypi gunicorn[1567]: [2020-01-03 17:46:54 +0000] [1567] [CRITICAL] WORKER TIMEOUT (pid:1576)
Jan 03 17:46:54 raspberrypi gunicorn[1567]: [2020-01-03 17:46:54 +0000] [1576] [INFO] Worker exiting (pid: 1576)
Jan 03 17:46:55 raspberrypi gunicorn[1567]: [2020-01-03 17:46:55 +0000] [1593] [INFO] Booting worker with pid: 1593

我尝试从模块中调整read方法,如果帧为None,则返回None。但是结果是相似的。

你知道怎么做吗?你知道怎么做吗?