利用flask解析大华摄像头的视频
利用flask解析大华摄像头的视频
作为AI智能的一种应用场景,视频监控系统已经在各个行业得到广泛应用。而海康威视和大华技术是国内两家领先的视频监控设备制造商,其摄像头在市场上占有很大的份额。本文将介绍如何使用Flask框架解析海康摄像头和大华摄像头的视频。
一、安装依赖包
使用Flask框架解析大华摄像头视频,需要安装以下依赖包:
- pip install flask
- pip install opencv-python
- pip install requests
- pip install numpy
- pip install onvif-python3
二、获取大华摄像头视频流
获取大华摄像头视频流大华摄像头可以通过ONVIF协议获取视频流。我们可以使用onvif库实现获取视频流的功能。代码如下:
from onvif import ONVIFCamera
import cv2
def get_dahua_stream():
cam = ONVIFCamera(ip, port, username, password)
media_service = cam.create_media_service()
token = media_service.GetProfiles()[0].token
stream_url = media_service.GetStreamUri({'StreamSetup': {'Stream': 'RTP-Unicast', 'Transport': {'Protocol': 'UDP'}}, 'ProfileToken': token}).Uri
cap = cv2.VideoCapture(stream_url)
while True:
_, frame = cap.read()
cv2.imshow("Dahua Stream", frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
其中,[ip]为大华摄像头IP地址,[port]为ONVIF端口号,[username]为登录用户名,[password]为密码。
三、将视频流输出到Web页面
使用Flask框架可以将海康摄像头的视频流输出到Web页面。代码如下:
from flask import Flask, render_template, Response
from onvif import ONVIFCamera
import cv2
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
def gen_dahua_stream():
cam = ONVIFCamera(ip, port, username, password)
media_service = cam.create_media_service()
token = media_service.GetProfiles()[0].token
stream_url = media_service.GetStreamUri({'StreamSetup': {'Stream': 'RTP-Unicast', 'Transport': {'Protocol': 'UDP'}}, 'ProfileToken': token}).Uri
cap = cv2.VideoCapture(stream_url)
while True:
ret, frame = cap.read()
if not ret:
break
else:
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')
@app.route('/dahua_stream')
def dahua_stream():
return Response(gen_dahua_stream(),
mimetype='multipart/x-mixed-replace; boundary=frame')
if __name__ == '__main__':
app.run(debug=True)
其中,gen_hikvision_stream()函数通过VideoCapture类获取视频流,并将视频流转换成jpg格式输出。hikvision_stream()函数使用Flask框架的Response对象将视频流输出到Web页面。
四、 创建HTML模板文件
<!DOCTYPE html>
<html>
<head>
<title>Dahua Stream</title>
</head>
<body>
<img src="{{ url_for('dahua_stream') }}" />
</body>
</html>
在浏览器中访问http://localhost:5000/即可看到大华摄像头的视频流。