V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
CriseLYJ
V2EX  ›  Python

利用 flask 将 opencv 实时视频流输出到浏览器--解决性能问题

  •  
  •   CriseLYJ · 2019-03-04 22:33:07 +08:00 · 2089 次点击
    这是一个创建于 1879 天前的主题,其中的信息可能已经有所发展或是发生改变。

    利用 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 喽!
    • 附上登录页面截图 在这里插入图片描述
    7 条回复    2019-03-06 17:29:39 +08:00
    CriseLYJ
        1
    CriseLYJ  
    OP
       2019-03-04 22:34:29 +08:00
    多谢捧场!!
    CriseLYJ
        2
    CriseLYJ  
    OP
       2019-03-04 23:21:35 +08:00
    欢迎大佬们过来查看!!
    ipwx
        3
    ipwx  
       2019-03-04 23:24:50 +08:00   ❤️ 1
    用 jpeg 流,这是何等奢侈的行为。。。
    xiaoheijw
        4
    xiaoheijw  
       2019-03-05 01:16:37 +08:00
    这是 flask 作者的教程写法套了个 ui ?
    CriseLYJ
        6
    CriseLYJ  
    OP
       2019-03-05 09:13:13 +08:00
    并不知道作者是谁。。。。。。。。。那里跟他的一样??
    CriseLYJ
        7
    CriseLYJ  
    OP
       2019-03-06 17:29:39 +08:00
    ...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3608 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 04:25 · PVG 12:25 · LAX 21:25 · JFK 00:25
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.