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

在处理 NATS 订阅者时无法通过 Flask Web 应用程序发送视频帧

如何解决在处理 NATS 订阅者时无法通过 Flask Web 应用程序发送视频帧

我正在尝试使用 NATS pub-sub 将通过我的网络摄像头生成的帧提供给网络应用程序。我能够检索我可以确认的帧,同时在回调函数中放置打印“数据”(yield 语句被注释)。

但是当我用 yield 语句再次运行它时,它没有显示任何帧产量并且 Web 应用程序页面是空白的。

你能帮我吗?我对所有这些事情都很陌生。

import nest_asyncio
nest_asyncio.apply()

import cv2
import sys
import base64
import numpy as np
from flask import Flask,Response,render_template
from nats.aio.client import Client as NATS
from json import loads
from nats.aio.errors import ErrConnectionClosed,ErrTimeout,ErrNoServers

loop = asyncio.get_event_loop()
app = Flask(__name__)

@app.route('/')

def index():
    return render_template('index.html')

@app.route('/video_Feed',methods=['GET'])

def video_Feed():
    
    async def get_video_stream(loop):
        nc = NATS()
        await nc.connect(servers = ["nats://localhost:4222"],connect_timeout=1,loop=loop)
        async def message_handler(msg):
            data = msg.data
            print(type(data))
            try:
                yield (b'--frame\r\n'
                b'Content-Type: image/jpeg\r\n\r\n' + data + b'\r\n')  
            except:
                print("Yield not working")

        sid = await nc.subscribe("video_stream","workers",cb=message_handler)
        await asyncio.sleep(5,loop=loop)

    loop.run_until_complete(get_video_stream(loop))
    return Response(mimetype = 'multipart/x-mixed-replace; boundary=frame')


if __name__ == '__main__':
    app.run(host='0.0.0.0',debug = True)
    print("1111")

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