利用 flask 将 opencv 实时视频流输出到浏览器
- 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 喽!
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/541053
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.