zoukankan      html  css  js  c++  java
  • 关于摄像头推流拉流的一些内容

    关于摄像头推流拉流的一些内容

    近期在做用Django显示摄像头实时画面的需求,本文就大致聊一聊最近搜集到的相关资料。

    基本上原理就是有一个中转服务器(比如Nginx),FFMPEGD推流,html拉流。那Django干啥?控制页面拉流。或者说python干啥?拉流。

    还有一些是用opencv做推流的,但那些基本是在做视觉处理的或者画面处理的时候才用的,跟我的情况不符,我的情况是:延迟做到最低、最低...

    我的环境:海康威视摄像头,Django后端做

    一些关键内容:RTMP 、RTSP、hls 、FFMPEG 、nginx-rtmp服务器

    目前总结了4种实现方案供参考

    实现方案之:NGINX + FFMEPG

    • 优点:

      ​ 方案多,网上教程一大堆

    • 缺点:

      ​ 延迟较高

    • 延迟情况:

      ​ 5、6秒。延迟优化原理参考下方链接

    • 基本原理:

      ​ FFMEPG把RTSP格式的视频流推到NGINX,NGINX再进行流的处理、转换。nginx做RTMP服务端

    ​ 参考链接:视频流多分辨率的处理https://www.jibing57.com/2020/08/01/advanced-configure-of-nginx-rtmp/

    实现方案之:NGINX + FFMEPG + opencv

    • 优点:

      ​ 能对画面做一些处理

      ​ 单用opencv处理时延迟基本在1、2秒内

    • 缺点:

      ​ 用管道传输流,不容易实现。

    • 延迟情况:

      ​ 因报错问题,无结果

    • 基本原理:

      ​ opencv读取摄像头,处理后用FFMPEG推流到Nginx服务器。django的html拉流。nginx做RTMP服务端

    • 参考链接:

      ​ CSDN一大堆

    实现方案之:opencv +Django

    • 优点:

      ​ 实现过程简单

    • 缺点:

      ​ 无法关闭

    • 延迟情况:

      ​ 在1,2秒内

    • 基本原理:

      ​ opencv获取每一帧,然后通过流的HTTP流的方式传到前端。

    • 参考链接:

      https://www.coder.work/article/2084211

    实现方案之:jsmpeg + FFMEPG + http中继

    • 优点:

      ​ 不需要RTMP服务器(Nginx),解析靠js插件,RTSP流还是通过FFMEPG推,推到websocket频道

    • 缺点:

      ​ Django貌似无法做中继,暂时只能用ginrtsp做中继。可以尝试用opencv在django内部推到ws频道

    • 延迟情况:

      ​ 1,2秒

    • 基本原理:

      ​ 不做RTSP转RTMP,通过ws将流发布,前端通过jsmpeg解析。

    • 参考链接:

      ​ JSMPEG:https://github.com/phoboslab/jsmpeg

      ​ http中继:https://github.com/wanghaoxi3000/gin-rtsp

  • 相关阅读:
    PerfDog
    adb 常用操作
    netstat命令(net-tools)
    资源路径总结:
    四个作用域对象:
    jsp的 九大内置对象
    Jsp 的语法和指令
    JSP 学习
    server.xml 文件:
    Web.xml 文件使用总结:
  • 原文地址:https://www.cnblogs.com/lisicn/p/14582688.html
Copyright © 2011-2022 走看看