微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Flask OpenCV 将视频流发送到外部 HTML 页面

如何解决Flask OpenCV 将视频流发送到外部 HTML 页面

我想问一个关于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() 添加参数。默认情况下,它在 localhost 上运行,将其更改为 app.run(host= '0.0.0.0') 以在您机器的所有 IP 地址上运行。 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()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。