zoukankan      html  css  js  c++  java
  • 谷歌浏览器中预览海康大华等监控视频的思路与方法

    随着现代社会不断发展,对于安防行业的需求也越来越多。

    近年来,各大安防厂商如雨后春笋一般不断涌现,以视频监控为主的海康、大华、宇视;以门禁为主的钮贝尔等。

    各大平台也都在介入安防行业,像阿里,腾讯的数字城市。其他各种针对安防行业的解决方案也是层出不穷,如雪亮工程,智慧交通,智慧社区等等。

    如今安防行业应用的存在于各行各业中,各种安防设备也是五花八门,层出不穷,但目前视频监控仍是最主要的市场。

    本人近些年来对海康,大华,宇视等视频厂商做过一些视频对接的开发,但始终存在一个问题,在谷歌浏览器中如何进行视频监控的预览。

    本文将主要解决在谷歌,火狐等非IE浏览器中预览视频监控问题,给广大开发者提供一个思路方法。


    在此之前本人也百度过很多方案,但效果都不是很好,多多少少都存在些问题。

    文中将这些方法进行了一个大概的汇总,以便供大家参考。

    在软件开发中分为 C/S 架构和 B/S 架构,即客户端程序与网页端程序。

    客户端在对接监控视频时比较方便也比较简单,直接对接厂商的视频控件或是 SDK 就可以了。

    网页端最常用的就是通过厂商平台的视频控件进行预览回放,这种通过视频控件的方式优点有很多,比如稳定性强,可使用视频控件进行录像,截图,云台控制等操作。

    但是网页端调用视频控件有一个比较严重的问题,只支持IE浏览器。

    视频控件一般都是 OCX 的组件,注册到注册表中后页面通过 ActiveXObject 进行创建并调用里面的方法。

    现在谷歌浏览器中现已不支持 ActiveXObject 的创建及调用,这是由于 chrome 浏览器在 45 版本后不再提供对 npapi 插件的支持。

    网上也有一些手动启动 npapi 的方法,但是操作比较繁琐,不可能针对用户去大面积铺开使用。

    针对谷歌浏览器预览视频监控的方法大概有以下几种

    1.使用 ffmpeg

    地址:https://blog.csdn.net/weixin_43237948/article/details/89308678

    该方案是将 RTSP 视频转成 HLS 格式,前端通过第三方js再去从服务中取流。

    这种方式在配置的这部分相对来说比较复杂,而且网上相关的资料也不是很多。

    2.VLC控件进行

    安装 VLC 客户端,直接在浏览器中调用 VLC 的视频控件,通过监控视频 RTSP 串流进行预览。

    该方式调用时比较方便,在360安全浏览器的极速模式下是可运行的,但是在谷歌浏览器依旧因为插件的原因不能预览

    3.WebSocket视频流转发

    开发一个服务端,通过摄像头的设备 SDK 去取流,在将视频流通过 WebSocket 发送到前端页面,页面中再将获取到的视频流绘制到 DIV 中。

    参考地址:https://download.csdn.net/download/qq30886226/10617007

    该方式对于浏览器端压力较大,而且视频画面也会出现丢帧模糊的现象。多个视频调用时服务端的压力也会过大甚至崩掉。

    以上三种方式是题主在开发过程中所接触到的一些方法,这几个方法都有一个共同的问题,视频预览相对来说容易,但录像回放的功能不太好实现。

    题主最近发现一种新的方式,这中方式可以较好的解决大部分浏览器预览视频监控中的问题,其中包括回放,录像抓图,云台控制等。

    思路很简单

    1、开发一个客户端程序,用程序去对接视频监控(推荐使用厂商自己的视频控件)。

    2、客户端程序启动一个 WebSocket 服务。

    3、网页中连接 WebSocket 服务,通过 WebSocket 发送消息。客户端收到消息解析后在进行相对应的操作。

    这种方式基本上解决了现有浏览器预览监控视频的绝大部分问题。

    1、浏览器支持:WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议,,只要是支持HTML5,WebSocket就可以使用。

    2、稳定性,功能完整性:因为客户端是调用的厂商视频控件,所以无论是在取流的稳定性,视频清晰度等各个方面,肯定要比自己去取流在做操作方便的多。而且大部分视频控件都是包括一些功能,例如云台控制、抓图、录像等操作。

    这种方式题主已经测试成功并且已应用在项目上。

    各大厂商自己个视频控件能在谷歌浏览器上运行其实也是这个原理,通过 WebSocket 来操作视频客户端。

  • 相关阅读:
    计算机基础总结
    Apache安装错误 APR not found解决方法
    一、编译错误
    2.2 进程控制之进程共享
    2.1 进程控制之fork创建子进程
    ARM串口控制终端命令
    u-boot、kernel、root系统烧写和挂载命令命令
    8.1 编写USB鼠标驱动程序,并测试
    八、USB驱动分析
    Source Insight的使用
  • 原文地址:https://www.cnblogs.com/Mo-MaTure/p/12793960.html
Copyright © 2011-2022 走看看