最近公司项目需要在web上实时播放摄像头视频。但是早前由于html发展太慢。浏览器不支持。各大视频厂商基本都是开发扩展插件来实现。但是目前各大浏览器都有安全机制,基本不允许额外安装插件等,

百度了很多。很多都是基于ie,,使用active插件实现,而我们公司项目优化是基于谷歌,,,,而且不能使用插件(用户体验)。

所以整理一套。无需安装插件,在任意浏览器实时播放摄像头视频

正文:

部署nginx、ffmpeg转为rtmp、利用video.js播放,无需浏览器安装插件

摄像头采用大华的,这里提供一个大华摄像头ip搜索软件(用于检测同一网段下在线摄像头设备信息)

地址:https://download.csdn.net/download/u011877155/10765657

环境:windows 服务器

vcl视频播放器https://download.csdn.net/download/u011877155/10765708

1、查看摄像头信息:首先打开上面ip搜索软件,获取摄像头ip,查看主码流,视频编码等。如果知道摄像头地略过

2、确认提供流是否能够播放:打开vlc播放器【媒体--》打开网络串流,输入流地址】。这里大华提供的rtsp流地址,

【rtsp://账号:密码@IP地址:544/cam/realmonitor?channel=1&subtype=0\】【端口号默认544,通道号channel默认1,主码流为        0(即subtype=0),辅码流为1(即subtype=1)】

3、将nginx、ffmpeg 解压后放置c盘根目录。配置环境变量path:C:\ffmpeg\bin

相关文件地址:https://download.csdn.net/download/u011877155/10765746

4、启动nginx【运行文件中的exe文件,运行一闪之后任务管理器查看nginx.exe进程存在即可】

4、验证是否配置成功:cmd 输入ffmpeg 提示一大段话即可

4、cmd中输入

ffmpeg -i "rtsp://admin:dsgbridge@192.168.1.102:554//cam/realmonitor?channel=1&subtype=0" -vcodec  h264   -f flv -an "rtmp://localhost/live"

回车后控制台持续打印转流信息

5、打开vcl播放器,播放rtmp://localhost/live,看看是否成功

这样转流步骤就完成了,下面集成进java即可

1、设置项目启动自动启动ngix服务,创建线程,项目启动时启动。建议不要集成,直接在服务器启动一次即可

public class nginx extends Thread {public void run(){String cmd = "cmd /c c: && cd nginx && start nginx";//String stop ="cmd /c E: && cd nginx && nginx.exe -s quit";Runtime run = Runtime.getRuntime();try {java.lang.Process process = run.exec(cmd);InputStream in = process.getInputStream();System.out.println(cmd);while (in.read()!=-1){System.out.println(in.read());}in.close();process.waitFor();System.out.println("nginx启动成功");} catch (IOException | InterruptedException e) {e.printStackTrace();}}public static void main(String[] args) {new nginx().start();}}

2、启动转流代码

附上编写好的工具类https://download.csdn.net/download/u011877155/10765835

在javaweb中直接调用

 public static Map<String,String> maps= new HashMap<>();public static FFmpegManager  manager = new FFmpegManagerImpl();   //启动视频转码@RequestMapping(value = "/zhuanma")public void zhuanma(String ip,String code,HttpServletResponse response, HttpServletRequest request){try {Map<String,String> map = new HashMap<>();map.put("appName",code);//code为客户端编码map.put("input", "\"rtsp://admin:dsgbridge@"+ip+"/cam/realmonitor?channel=1&subtype=0\"");map.put("output", "\"rtmp://localhost/live/\"");map.put("codec", "h264");map.put("fmt", "flv");map.put("fps", "25");map.put("rs", "640x360");map.put("twoPart", "0");//执行任务,id就是appName,如果执行失败返回为nullString id=manager.start(map);// 将转流放入静态map中用于关转流maps.put(code+ip,id);//  manager.stop(id);System.out.println(code+ip+"流已开启");} catch (Exception e) {e.getStackTrace() ;}}//关闭转流@RequestMapping(value = "/guanbi")public void guanbi(String codeip,HttpServletResponse response, HttpServletRequest request){try {manager.stop(maps.get(codeip));System.out.println(codeip+"流已关闭");} catch (Exception e) {e.getStackTrace() ;}}

后端完成,下面是前端展示

引入js

<script src="http://vjs.zencdn.net/5.20.1/video.js"></script>这是在线的,局域网的话自己百度下载一个

<video id="video-div" class="video-js vjs-default-skin" controls  poster="${ctx}/resources/css/bj.jpg" data-setup="{}"><source id="video" src="" type="rtmp/flv"></video>

src写入rtmp://localhost/live流即可,code客户端编码可以随意输入,我这了是要区分不同浏览器客户端打开不同ip摄像头的记录,用于关闭对应流,节省资源,记得启用浏览器flash。。。好像flash也要被淘汰,但是目前只能这样

注:暂未将nginx、ffmpeg等文件集成在我提供的jar中,可以将这这2个文件集成到jar,这样只需要一个jar,全部搞定。不过没啥难度,懒得弄了。

下面放上jar的源码。提供大家修改优化。https://download.csdn.net/download/u011877155/10765896

海康、大华摄像头chrome高版本实时播放(java集成)相关推荐

  1. 华为海康大华摄像头编译RTSP转RTMP和HTTPFLV

    华为海康大华摄像头编译RTSP转RTMP和HTTPFLV 项目需求要看摄像头实时画面谷歌浏览器不支持RTSP流直接展示 方案一 通过Java+nginx+rtsp转rtmp流 方案二 通过Java+ ...

  2. 大华摄像头实现web端实时播放以及录像回放

    文章目录 前言 一.在乐橙云平台上注册账号并添加设备创建应用 二.利用云平台的api获取到前端展示需要的相关信息 三.前端页面展示内容 总结 前言 前段时间对接了大华摄像头,在此做一次总结,总体思路是 ...

  3. 如何解决海康大华摄像头接入国标GB28181协议视频平台EasyGBS播放视频流,出现多个播放器的问题?

    我们在前段时间更新了支持国标GB28181协议的视频平台EasyGBS,有很多用户都已经更新使用了,并且反响都比较好,新增的视频调阅功能满足了大部分人对直播界面直观显示的需求,所以我们仍在不断进行新的 ...

  4. 海康大华摄像头接入国标流媒体平台显示设备离线问题解决

    发展目标 GB28181协议是由公安部牵头实现的安防行业统一的设备接入.流媒体传输的协议. 国标流媒体解决方案是专门用于接入国标设备的视频解决方案,不但从设备接入层面上,接入了内网或者公网的国标设备, ...

  5. 海康大华天地伟业网络摄像头chrome浏览器web二次开发

    海康大华天地伟业网络摄像头chrome浏览器二次开发 海康大华天地伟业网络摄像头chrome浏览器web二次开发 由于工作的原因需要开发海康和大华,还有天地伟业的摄像头,而且必须是本地部署开发,每个厂 ...

  6. 安防RTSP协议摄像头实现WEB端无插件直播流媒体服务EasyNVR实现海康大华宇视摄像头网页播放的方法

    背景分析:微信直播的兴起 进入移动互联网时代以来,企业微信公众号已成为除官网以外非常重要的宣传渠道,当3.2亿直播用户与9亿微信用户的势能累加,在微信上开启直播已成为越来越多企业的必然选择. Easy ...

  7. 安防互联网摄像头海康大华硬盘录像机视频流媒体服务器EasyNVR在layer弹出层中使用video标签无法最大化全屏播放问题解决

    诞生背景 众所周知,EasyNVR可以将局域网/广域网上的海康/大华等网络摄像头由rtsp转换为rtmp.rtsp.hls.flv协议转换,并提供推流服务,可以将拉到的网络摄像头直接转发到流媒体服务器 ...

  8. RTSP安防网络摄像头/海康大华硬盘录像机网页无插件直播方案EasyNVR出现操作和画面显示不一致问题如何优化?

    诞生背景 众所周知,EasyNVR可以将局域网/广域网上的海康/大华等网络摄像头由rtsp转换为rtmp.rtsp.hls.flv协议转换,并提供推流服务,可以将拉到的网络摄像头直接转发到流媒体服务器 ...

  9. RTSP安防网络摄像头/海康大华硬盘录像机/NVR网页无插件低延时播放流媒体服务器EasyNVR页面显示网络请求失败问题

    进入移动互联网时代以来,企业微信公众号已成为除官网以外非常重要的宣传渠道,当3.2亿直播用户与9亿微信用户的势能累加,在微信上开启直播已成为越来越多企业的必然选择. 青犀团队研发的EasyNVR核心在 ...

  10. LiveGBS流媒体平台GB/T28181功能-摄像头报警告警预案触发图片截取视频录制海康大华华为宇视等摄像头报警触发截图录像

    LiveGBS摄像头报警告警预案触发图片截取视频录制海康大华华为宇视等摄像头报警触发截图录像 1.报警信息 1.1.报警查询 1.2.配置开启报警订阅 1.2.1.国标设备编辑 1.2.2.勾选订阅项 ...

最新文章

  1. 日志、下载、投影、连接查询
  2. C函数的实现(strcpy,atoi,atof,itoa,reverse)
  3. qemu-kvm磁盘读写的缓冲(cache)的五种模式
  4. linux打开文件命令_详解Linux中3个文件查找相关命令
  5. TCP/IP参考模型与5层参考模型
  6. C#的winform中MDI 父窗体改变背景色[转]
  7. java 极光推送_极光推送java实现
  8. lastinsertid mysql_mysql - Go语言中文网 - Golang中文社区
  9. 结合企业实例谈IT规划过程
  10. Android ApiDemos示例解析(110):Views-Data Widgets-1. Dialog
  11. threejs - uv 映射 简要
  12. 阳性水草与阴性水草的区分
  13. android画布橡皮,Android画板开发之橡皮擦功能
  14. swarm mysql集群_docker搭建基于percona-xtradb-cluster方案的mysql集群
  15. POJ 1066 Treasure Hunt 解题报告
  16. 解决POSTMAN传参报错,JSON parse error: Cannot deserialize instance of `java.util.ArrayList` out of START_OB
  17. 3dsmax中计算机快捷键大全,3Dmax快捷键大全
  18. 思科网络学院-网络互连-第四章
  19. 即时消息:如何保证消息的一致性
  20. 2 Z变换、fifter、freqz等离散系统相关函数MATLAB实现

热门文章

  1. 计算机网络实验:netmeeting 在局域网上的应用
  2. Hexo博客向百度提交链接
  3. 解决Specifying a namespace in include()withou providing an app_name
  4. 网易2019校招笔试题-瞌睡
  5. 【工控老马】洗衣机PLC程序控制系统设计详解
  6. 文章2:多功能智能跟随行李箱控制系统设计 | 本科毕业设计 - 【论文终稿】
  7. EditPlus软件的安装与配置
  8. windows server 2008 安装及VS2008和VS 2008 SP1安装
  9. “元宇宙”火了,这玩意到底是啥?
  10. js分割字符串转数组