opencv - 使用 socketio 的网络服务器上的视频流仅在第一次工作
问题描述
我有这个问题,我想使用带有 OpenCV 的 flask-socketio 将我的本地流式传输到 Web 服务器。
import cv2
from flask import Flask, render_template, Response
from flask_socketio import SocketIO
app = Flask(__name__)
socketio = SocketIO(app, async_mode='threading')
@app.route('/')
def index():
return render_template('index.html')
@app.route('/video_feed')
def video_feed():
return Response(gen_frames(), mimetype='multipart/x-mixed-replace; boundary=frame')
def gen_frames():
while (True):
# Capture frame-by-frame
ret, frame = vcap.read()
# print cap.isOpened(), ret
if frame is not None:
ret, buffer = cv2.imencode('.jpg', frame)
frame = buffer.tobytes()
yield (b'--frame\r\n'b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n') # concat frame one by one and show result
else:
break
if __name__ == '__main__':
# Open a sample video available in sample-videos
vcap = cv2.VideoCapture(0)
print('[INFO] Starting server at http://localhost:5000')
socketio.run(app=app, host='0.0.0.0', port=5000)
问题是这只适用于第一次,如果我停止并再次运行此代码,网络服务器上将没有视频。如果你等了 5 分钟或 10 分钟,它会再次工作并回到我说的循环。
此外,更改主机和端口也可以。但只有一次。
任何人有任何想法?
谢谢!
解决方案
推荐阅读
- javascript - Uncaught SyntaxError: Unexpected token for while adding data to pieChart dynamic
- python - "ALTER TABLE" to add a database column with Pony ORM
- amazon-s3 - Apache Flink 错误检查点到 S3
- cloud-foundry - Deploying Stub Runner Boot Server to PCF
- javascript - How to print key and values from dictionaries enlisted in array, javascript
- java - How can I convert an enum constant into a key-value pair of it's field values?
- java - 如何在 Java 中创建和使用 Windows 服务
- tensorflow - 在 ubuntu18.04 中使用 CUDA9.2 cuDNN7.1.4 编译 Tensorflow 但得到错误 libtensorflow_framework.so, not found
- arrays - 将数组形式(作为字符串)转换为 Pyspark 中的列
- java - How to make use of a try{}-block-variable in a method?