Flask OpenCV 将视频流发送到外部 HTML 页面
Flask OpenCV send video stream to extrenal HTML Page
想请教一个关于使用flask管理视频流的问题:
1-> 我使用 rtsp 协议从 IP 摄像机恢复视频流
2-> 我用 Flask 显示视频,但在我的浏览器中的 localHsot
from flask import Flask, render_template, Response
import cv2
app = Flask(__name__)
camera = cv2.VideoCapture("rtsp://--:--@ipAdress/media.amp")
def gen_frames():
while True:
# Capture frame-by-frame
success, frame = camera.read()
#cv2.imshow('frame', frame)
print("success-------",success)
if not success:
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('/video_feed')
def video_feed():
#Video streaming route. Put this in the src attribute of an img tag
return Response(gen_frames(), mimetype='multipart/x-mixed-replace; boundary=frame')
@app.route('/')
def index():
"""Video streaming home page."""
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
我想知道,是否可以不在 locahost http://127.0.0.1:5000 中显示,而是将其发送到外部 HTML 页面
谢谢。
为您的 app.run()
添加一个参数。默认情况下,它在本地主机上是 运行s,在您所有计算机的 IP 地址上将其更改为 app.run(host= '0.0.0.0')
到 运行。 0.0.0.0
是一个特殊值,您需要导航到实际 IP 地址。
if __name__ == '__main__':
app.run(host= '0.0.0.0',debug=True)
然后客户端浏览器需要您的机器 IP 和您打开的端口来导航和查看流
http://your-machine-ip:5000
所以机制是你的机器创建一个文件 index.html 并在外部浏览器请求地址时提供它
http://your-machine-ip:5000
将您的 index.html 放入文件夹 templates/index.html
此处有更多详细信息:Configure Flask dev server to be visible across the network
我想你也需要camera.release()
。
想请教一个关于使用flask管理视频流的问题: 1-> 我使用 rtsp 协议从 IP 摄像机恢复视频流 2-> 我用 Flask 显示视频,但在我的浏览器中的 localHsot
from flask import Flask, render_template, Response
import cv2
app = Flask(__name__)
camera = cv2.VideoCapture("rtsp://--:--@ipAdress/media.amp")
def gen_frames():
while True:
# Capture frame-by-frame
success, frame = camera.read()
#cv2.imshow('frame', frame)
print("success-------",success)
if not success:
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('/video_feed')
def video_feed():
#Video streaming route. Put this in the src attribute of an img tag
return Response(gen_frames(), mimetype='multipart/x-mixed-replace; boundary=frame')
@app.route('/')
def index():
"""Video streaming home page."""
return render_template('index.html')
if __name__ == '__main__':
app.run(debug=True)
我想知道,是否可以不在 locahost http://127.0.0.1:5000 中显示,而是将其发送到外部 HTML 页面
谢谢。
为您的 app.run()
添加一个参数。默认情况下,它在本地主机上是 运行s,在您所有计算机的 IP 地址上将其更改为 app.run(host= '0.0.0.0')
到 运行。 0.0.0.0
是一个特殊值,您需要导航到实际 IP 地址。
if __name__ == '__main__':
app.run(host= '0.0.0.0',debug=True)
然后客户端浏览器需要您的机器 IP 和您打开的端口来导航和查看流
http://your-machine-ip:5000
所以机制是你的机器创建一个文件 index.html 并在外部浏览器请求地址时提供它
http://your-machine-ip:5000
将您的 index.html 放入文件夹 templates/index.html
此处有更多详细信息:Configure Flask dev server to be visible across the network
我想你也需要camera.release()
。