利用 flask 将 opencv 实时视频流输出到浏览器--高性能

本文介绍如何使用Flask框架结合OpenCV实现跨设备的实时视频流分享,通过multipart模式优化性能,支持多客户端同时访问,并新增登录、视频录制等功能。

利用 flask 将 opencv 实时视频流输出到浏览器

  • 解决了所有问题,而且不消耗性能,使用了yield生成器,完美解决性能问题!
  • 还会继续贡献代码,链接在底部,大哥们如果喜欢记得给个star哦!
  • opencv 通过 webcam 可以获取本地实时视频流,但是如果需要将视频流共享给其他机器调用,就可以将利用 flask 框架构建一个实时视频流服务器,然后其他机器可以通过向这个服务器发送请求来获取这台机器上的实时视频流。

multipart 模式

  • 想要将后一次请求得到的图片覆盖到前一次从而达到动画的效果就需要使用在 response 的时候使用 multipart 模式。Multipart response 由以下几部分组成:包含 multipart content 类型的 header,分界符号分隔的各个 part,每个 part 都具有特定的 content 类型。multipart 视频流的结构如下:
	HTTP/1.1 200 OK
    Content-Type: multipart/x-mixed-replace; boundary=frame

    --frame
    Content-Type: image/jpeg

    <jpeg data here>
    --frame
    Content-Type: image/jpeg

    <jpeg data here>
    ...

在这里插入图片描述

这里解决了一次只能被一台机器查看的局限性

  • 问题已解决
  • 如果视频流一直存在的话,这个 app 能输出视频流的的客户端的数量和 web worker 的数量相同,在 debug 模式下,这个数量是 1,也就是说只有一个浏览器上能够看到视频流输出。如果要克服这种局限的话,使用基于协同网络服务的框架比如 gevent,可以用一个 worker 线程服务多个客户端。不过问题已经解决,可以使用各种姿势食用

已解决

  • 新增功能
  • 这里增加了登录与退出登录功能
  • 还增加了视频的录制
  • 还会```继续贡献代码完善项目``!!!
  • 地址 : Github 项目地址
  • 如果觉得小弟的项目不错,麻烦给个 star 喽!
  • 附上登录页面截图
    在这里插入图片描述
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值