我有这个连接到 rtsp 摄像头的代码:从 flask 导入 Flask,Responseimport cv2app = Flask(__name__)RTSP_URL = \'rtsp://admin:xxxxxxx@xxxx:554/onvif1\'def generate_frame...
我有这个连接到 rtsp 相机的代码:
from flask import Flask, Response
import cv2
app = Flask(__name__)
RTSP_URL = "rtsp://admin:[email protected]:554/onvif1"
def generate_frames():
cap = cv2.VideoCapture(RTSP_URL)
frame_skip = 2 # Skip every 2 frames
while True:
for _ in range(frame_skip):
cap.read() # Skip frames
success, frame = cap.read()
if not success:
break
else:
# Resize frame to lower resolution
frame = cv2.resize(frame, (320, 240)) # Reduce to 320x240 resolution
# Encode frame to JPEG format with lower quality
encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), 30] # Set JPEG quality to 30
_, buffer = cv2.imencode('.jpg', frame, encode_param)
frame = buffer.tobytes()
# Yield frame in MJPEG format
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')
@app.route('/video_feed')
def video_feed():
return Response(generate_frames(), mimetype='multipart/x-mixed-replace; boundary=frame')
if __name__ == '__main__':
app.run(host='0.0.0.0', port=5000)
它在我的本地电脑上运行良好,即使摄像头和电脑在不同的网络中(我使用的是 ubuntu 桌面),但我购买了一个 ubuntu 服务器并使用了完全相同的代码,我通过 http://x.x.x.x:5000/video_feed ,这是 ubuntu 服务器的 ip,它非常非常慢,即使我对 librareis 进行了完全相同的安装,服务器的硬件也比我的 ubuntu 桌面强大得多,我降低了分辨率,它工作得更好一点,但仍然非常慢。ubuntu 服务器比我的 ubuntu deskotp 具有更好的连接,正如我所说的,它具有 rtx 4090 24gb 和 100 gb ram,因此对于从 rtsp 摄像头进行视频流传输来说,这不是什么大问题