功能:将视频以视频流的形式传入web端。我的理解就是,将视频转换为图片,一帧一帧的传入,连续的图片形成视频。
用途:将视频以视频流的方式输出到web端没有任何意义,因在web端可以直接输出视频。但是在一些特殊情况下,视频是实时生成的(摄像头录制视频,对视频进行图像检测等等),在这种情况下,就需要采用视频流的方式,将实时生成的图像输出的web端形成视频效果。
flask-video-streaming/
|——templates/
| |——index.html
|
|——app.py
index.html:
<html>
<head>
<title>Video Streaming Demonstration</title>
</head>
<body>
<h1>Video Streaming Demonstration</h1>
<img src="{{ url_for('video_feed') }}" height="500">
</body>
</html>
app.py:
import cv2
from flask import Flask, render_template, Response
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
def gen():
video_path = 'E:/GraduationProject/dataset/video/video1.mp4'
vid = cv2.VideoCapture(video_path)
while True:
return_value, frame = vid.read()
image = cv2.imencode('.jpg', frame)[1].tobytes()
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + image + b'\r\n')
@app.route('/video_feed')
def video_feed():
return Response(gen(), mimetype='multipart/x-mixed-replace; boundary=frame')
if __name__ == '__main__':
app.run()
Github:flask-video-streaming
该项目将摄像头获取的图像实时传入web端。