近期在处理一个将NVR录像机上的录像下载到服务器并通过浏览器播放的需求。 梳理记录下过程,做个备忘,同时遇到的一些细节问题解决,也供需要的同学参考。

  需求比较简单,就是把指定时间段的录像上传到服务器保存,并且允许用户通过web页面web浏览器,进行播放, 并且可以拖动控制播放进度。效果如。

  

   一、 视频下载

  视频下载比较简单,厂商都提供了针对JAVA集成SDK 的DEMO, 照着抄一抄就可以。 JAVA调用C库的SDK,一般使用JNA技术。一些细节问题

  1. 下载的文件名要唯一,避免相互覆盖,可以用GUID随机生成。

  2. 注意通道号正确,海康的通道号不是从0开始, 要根据设备信息取得,起始的数字通道号,多数是33。 数字通道D1其实对应的channel ID 应该是33.

  3. JNA调用 发生在 原生的异常会导致整个进程终止,最好不要在主要的服务进程直接通过JNA集成第三方SDK。

  4. 生产部署别忘了复制SDK依赖的原生*.so库

   二、 转换处理

  下载后的视频格式问题。

  通俗说的音视频格式如 MP4,MP3等,其实并不严谨。.mp4其实是指封装格式,此封装格式支持多种音视频编码格式。mp4 封装格式可以支持的视频编码格式如 h264,h265,  音频格式如 PCM , aac等。

  目前主流web 浏览器,支持良好的视频编码格式是H264, 音频格式是aac。 这也就是我们转换的目标。

  而源录像的编码格式视频格式多数可以在NVR中设置,目前主流的是H265.(相较于H264压缩比更高, 解码需要的计算资源也更高),音频编码是PCM。

  ffmpeg 是一个开发中经常用到的音视频处理程序,经过测试,其转换H265编码 至 H264编码,还是相当耗时的,时效性基本在生产中无法接受, 转换音频编码效率较高。

  因此此处建议的方案是, 将NVR的视频编码格式直接指定为H264,这样视频流编码就不需要经过转换了

  以下通过 ffmpeg 将 a.dav 文件中的 视频编码保持编码格式,音频格式转换为 aac编码,同时使用 mp4容器封装。

ffmpeg -i a.dav  -c:v copy -c:a aac 264.mp4

  * ffmpeg 如需将h265 转码 h264 ,是需要一个编译时额外额外开启 libx264 支持的, 直接copy  则不需要。

   三、 伪流媒体服务

   播放线上视频的几种方案, 1,下载后本地播放, 2, 伪流媒体 3 , 流媒体。以下为个人大致理解,未必准确

   1. 需要下载这个文件完成后,才能够播放。

  3. 如HLS协议等,切片较小。 看哪里下哪里,下载的视频片段都是完整可播放的,可以实时直播(边产生,边播放)

  2. 看哪里从哪里开始下载。 服务器根据浏览端传入的参数,将视频文件定位到对应位置后的内容传输至浏览器解码播放。 不能实时直播?(我猜。。)

  根据下载视频保存,及在线观看的需求,第二种方案比较适合。 但是是需要服务器支持的。 这里使用了nginx 做文件服务器,编译时,启用mp4模块

  相关信息:http://nginx.org/en/docs/http/ngx_http_mp4_module.html

  原理简介:

    

 四、 其他

   至此,把下载好,转换好的视频文件,放在正确的nginx文件服务目录下,浏览器中输入文件url路径,应该就能正常的回放视频了。

   还有一些其他细节

  1. 可能需要考虑硬件及网络的扩容, 视频存储需要较大的空间, 可能需要考虑存储扩容, 网络甚至,分布式文件系统等。下载大量视频的带宽占用也不能忽视, 可能需要扩容网络带宽。

  存储及带宽的占用,需要根据码率需求及预设的场景进行估算。(注意码率及带宽单位通常是bit 不是Byte)

  2. 跨系统调试可能会用到Java 的远程调试。以下在8000端口开放了远程调试,  

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000 -jar  test.jar

  最后  !2022国庆快乐 !

大华海康NVR录像JAVA下载及WEB播放的更多相关文章

  1. 大华等其他NVR接入海康IPC H.264方法

    有一次遇到这个问题,因为时间急,没有注意,这次一个朋友也遇到这个问题,各种百度,也没有看到答案 只好自己研究了一下,最终发现以下方式来解决 下面办法可以解决海康IPC不能能过ONVIF连接到大华等其他 ...

  2. 浏览器低延时播放监控摄像头RTSP海康大华硬盘录像机NVR视频(EasyNVR播放FLV视频流)

    背景描述 EasyNVR的使用者应该都是清楚的知道,EasyNVR一个强大的功能就是可以进行全平台的无插件直播.主要原因在于rtsp协议的视频流(默认是需要插件才可以播放的)经由EasyNVR处理后可 ...

  3. 海康NVR设备上传人脸图片到人脸库

    海康开放平台--海康文档链接--海康开发包和文档下载链接 硬件:海康超脑NVR(全称Network Video Recorder,即网络视频录像机).人脸摄像机. 环境:JDK_1.8 Windows ...

  4. 关于intouch/ifix嵌入视频控件并使用(海康,大华)

    2017年下半年项目开始接触利用intouch工控软件来进行项目二次开发.其中关于驱动的问题始终是上位机的重中之重,暂且不表(嘿嘿--),首先遇到的问题就是在弹窗中嵌入视频控件,监控设备的开停状态.经 ...

  5. EasyPlayer播放海康大华RTSP流时RTSPClient客户端连接兼容问题的解决

    在之前的博客<EasyPlayer RTSP播放器对RTSP播放地址url的通用兼容修改意见>中,我描述了遇到的一个客户在播放大华某款摄像机时地址不兼容的问题,这不,团队刚刚参考我的这个意 ...

  6. 针对监控摄像机(海康、大华等)录像 .h264 文件的流媒体播放设计

    监控摄像机(海康.大华等)内部带的录像功能一般录制的是h264文件,这种文件格式简单的把每一帧h264字节数据保存到文件里. 实际使用中,可能需要对特定录像进行反复检测,以训练.改进视频检测算法的准确 ...

  7. EasyNVR实现海康、大华NVR硬盘录像机Web无插件播放方案(支持取特定时间段视频流)

    本文转自:https://blog.csdn.net/black_3717/article/details/79872725 背景说明: 由于视频自身的直观性和便利性,对于传统安防行业,摄像机的直播和 ...

  8. 海康&大华&DSS视频拉流-RTSP转RTMP多媒体播放技术

    海康&大华&DSS获取RTSP 实时流 海康:rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/ ...

  9. RTSP安防摄像机(海康大华宇视等)如何推送到RTMP流媒体服务器进行直播

    方案介绍 目前互联网直播的CDN和标准RTMP流媒体服务器通常只能接收RTMP格式的音视频推流.目前市场上有一些自带RTMP推流的摄像机和编码器,可以直接在其rtmp推流配置里面配置推送到RTMP流媒 ...

随机推荐

  1. 2.Android高仿网易云音乐-引导界面和广告界面实现

    效果图 效果图依次为图片广告,视频广告,引导界面. 系列文章目录导航 目录 1.实现分析 广告界面就是显示图片和视频,所以可以放一个图片控件,视频控件,然后跳过按钮,提示按钮,WiFi预加载提示都是放 ...

  2. kubernetes下kubelet无法启动

    错误如下: 09:58:45 kubernetes-node01 kubelet[6248]: F0124 09:58:45.902571 6248 server.go:265] failed to ...

  3. 中国顶级程序员,从金山WPS走出来,自研了“表格编程”神器

    程序员的圈子里有很多如明星般闪耀的牛人! 有中国"第一代程序员"--求伯君,有在微信获得巨大成功的张小龙,有图灵奖获得者姚期智,有商业巨子张一鸣,更有开源影响力人物--章亦春. 章 ...

  4. Thingsboard硬网关金鸽BL102采集三菱PLC步骤

    PLC网关金鸽BL102:采集三菱FX-5U数据如何转成MQTT上报?金鸽BL102PLC网关时一款功能强大的PLC数据采集网关,南向可以采集主流的PLC,如三菱.西门子.台达.欧姆龙.施耐德等等PL ...

  5. C#委托的最简单入门和理解

      委托是.net语言中非常重要的一个概念,初学不太好理解也没有关系的,在一次一次的攻关后会领会到委托的精妙,可以说 .net 没有委托就没有后面更高级的事件,异步多线程等等特性的形成可能.所以一定要 ...

  6. 4.5省选模拟solution

    \(4.5\)省选测试\(solution\) 题面可是我精心准备(咕咕咕)了一周写出来的,大家就当看故事吧(那里面的人物确实是存在的,\(E\)就是本人啦,也算是对一段经历的回忆吧,所以这套考试的题 ...

  7. s905l3a系列刷armbian 教你从0搭建自己的博客

    最近服务器又更换了,原来的有一点点小意外(一个电阻给我焊接时搞掉了). 哎~~今天,我淘到了一个好东西----CM311-3a,配置很诱人,价格也不贵,60绰绰有余 比较 CM311-3a N1(炒到 ...

  8. pat甲级考试+pat1051+1056

    同上一篇博客: 贪心题目我已经刷了将近30道了,由于那几天考驾照就没写,以后有空的时候补过来吧,都在codeblock里 pat的题也刷了点,acwing 的题也刷了点,基本都攒下了.以后也会慢慢补过 ...

  9. 【原创】JDK 9-17新功能30分钟详解-语法篇-var

    JDK 9-17新功能30分钟详解-语法篇-var 介绍 JDK 10 JDK 10新增了新的关键字--var,官方文档说作用是: Enhance the Java Language to exten ...

  10. HTTP 的 Content-Type 及其媒体类型(MIME)

    Content-Type Content-Type 代表 HTTP 携带的文件类型,决定文件接收方或发送方将以什么形式.什么编码读取这个文件.下图,load.gif 的媒体类型就是 image/gif ...