本文转自博客:http://blog.csdn.net/xinlanbobo/article/details/53156742

近期工作中需要开发一套视频监控系统,实现WEB端、手机APP端预览局域网内的道路监控摄像机,我负责一些后台服务的开发工作。

由于之前项目中的程序都是采用私有协议、各摄像机厂商的SDK进行视频监控系统开发,这种技术方案更适合C/S架构的系统,应用于此次项目存在先天性不足,即手机APP端无法加载摄像机厂商的播放库,无法满足项目需求。另外原有的技术方案,导致WEB端的播放控件非常臃肿,且浏览器兼容性不佳。

鉴于以上原因,我开始寻求一套新的技术方案,在同事的推荐下发现了EasyDarwin开源项目。EasyDarwin让我心里一阵激动,原来国内有这么棒的流媒体开源项目。不但有对各子项目详细的说明、图纸,代码编写也非常规范,而且维护较好,更新率非常高。所以决定好好学习一下。

我选择由EasyIPCamera_RTSP入手。官方介绍此工程以其他IPC硬件(海康、大华、雄迈)提供的RTSP流作为EasyIPCamera的数据源,对外提供RTSPServer功能。即这个程序可以作为一个简单的RTSP服务、并且提供流媒体转发的功能,与我的实际需求较为相近。为了能够编译运行程序,我首先升级安装了VS2010环境(由于公司要求之前一直使用VS2008)。

这个项目的编译还是非常简单的,一次性编译通过。生成的EasyIPCamera_RTSP.exe运行依赖libEasyIPCamera.dll和libEasyRTSPClient.dll两个动态库。前者我理解为一个RTSP和流媒体转发的服务,后者应当起到RTSP客户端的作用,这两个库的源代码,没有在GitHub中找到。

EasyIPCamera_RTSP程序中,主要分以下几步实现:

1)首先通过源代码写死的方式,初始化了两个通道对象,代表两个前端IPC的rtsp串信息。这里我将通道对象改为4个,并在初始化通道对象时,将项目中的海康、大华、宇视等品牌的摄像机信息填入。

2)然后程序激活RTSP客户端,用于向前端IPC取流。

3)启动RTSP和流媒体转发的服务,侦听端口为8554,以回调形式侦听客户端请求。当有通道视频请求时,根据通道信息初始化对应的RTSP客户端,并将取出的视频流转发至请求客户端使用。

重新编译后运行,通过VLC播放器测试效果(打开网络串流,输入URL rtsp://IP:8554/1,此处的通道号由1开始)。经验证海康、大华、宇视的摄像机(均为道路监控、高清球型摄像机)均能够正常地预览。期间遇到了一个小问题,即大华摄像机预览失败,经Babosa协助,更新了libEasyRTSPClient.dll库后成功解决。貌似是因为rtsp串中对大华设备授权识别未成功,导致IPC无法正常响应码流格式等信息。

如上,使用EasyIPCamera可以非常简单地实现对前端摄像机RTSP取流。

下图是预览海康摄像机的截图:

获取更多信息

邮件:support@easydarwin.org

WEB:www.easydarwin.org

Copyright © EasyDarwin.org 2012-2016

EasyIPCamera通过RTSP协议接入海康、大华等摄像机,摒弃私有SDK接入弊端的更多相关文章

  1. 【视频开发】EasyIPCamera通过RTSP协议接入海康、大华等摄像机,摒弃私有SDK接入弊端

    近期工作中需要开发一套视频监控系统,实现WEB端.手机APP端预览局域网内的道路监控摄像机,我负责一些后台服务的开发工作. 由于之前项目中的程序都是采用私有协议.各摄像机厂商的SDK进行视频监控系统开 ...

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

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

  3. 来自iSpy整理的最全海康大华IPC的RTSP连接地址

    来自iSpy整理的最全海康大华IPC的RTSP连接地址 先贴出处: 海康:http://www.ispyconnect.com/man.aspx?n=Hikvision 大华:http://www.i ...

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

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

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

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

  6. 海康/大华 IpCamera RTSP地址和格式

    海康:rtsp://[username]:[password]@[ip]:[port]/[codec]/[channel]/[subtype]/av_stream说明:username: 用户名.例如 ...

  7. 海康大华RTSP格式

    海康实时流:rtsp://admin:12345@192.2.82.50:554/h264/ch4/main/av_stream海康回放流(模拟通道):rtsp://admin:12345@192.2 ...

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

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

  9. 将海康大华等网络摄像机RTSP流进行网页Flash rtmp和H5 hls直播的技术方案

    前言 再小的技术点也会有他的市场! 一直以来,都有一些不被看好,认为是成本太高,无法大规模展开的软件和产品形态,就好比每一座城市都会有他的著名小吃一样,即使是慕名而来的人源源不断,受众群体也总是有限, ...

随机推荐

  1. 获取cookie中的某个参数值

    因为cookie的值是很多key=value连接起来的字符串,所以如果要取cookie中某个key的值: function getCookie(name) { let cookieValue = nu ...

  2. Linux 之 Memcached

    Memcached的安装使用 参考教程:[千峰教育] 环境:CentOS 6.8 一.简介: memcached作为高速运行的分布式缓存服务器,具有以下的特点. · 协议简单 · 基于libevent ...

  3. hdu3338 / 方格横纵和问题终极版,最大流斩

    此题被誉为神奇最大流,诱惑我去做了下,感觉也是通常的思路. 题意:1.用1-9去填,满足所给的行/列和要求(和那个什么游戏差不多...) 求一种合法方案,输出.如:   一看,直接就建图了,每个点在白 ...

  4. 十六进制字符串jpg图片互转

    十六制字符串jpg图片互转(格式:FFD8FFE000104A******)如:FFD8FFE000104A46494600010100000100010000FFDB0043000806060706 ...

  5. AC日记——2条不相交的路径 51nod 1076

    1076 2条不相交的路径 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 给出一个无向图G的顶点V和边E.进行Q次查询,查询从G的某个顶点V[s] ...

  6. Codeforces Gym101606 I.I Work All Day (2017 United Kingdom and Ireland Programming Contest (UKIEPC 2017))

    I I Work All Day 这个题就是取模找最小的. 代码: 1 #include<iostream> 2 #include<cstdio> 3 #include< ...

  7. Maven教程:tutorialspoint-maven

    来自turorialspoint的Maven教程(英文),官网:http://www.tutorialspoint.com/maven/index.htm 这个教程在国内已经被翻译成中文,官网:htt ...

  8. 安装Vmware增强工具

    主机: Win7 虚拟机: VMware8.0+Debian6 目标: 离线安装软件包和VMware Tools 在虚拟机上安装完debian6后 1.在vmware的菜单中选择Vm->inst ...

  9. 邁向IT專家成功之路的三十則鐵律 鐵律十三:IT人理財之道-知足

    身為一位專業的IT人士,工作上不僅要做到滿足興趣與專業熱忱,當然也要做到能夠滿足荷包.現代人賺錢不是問題,但花錢卻出了很大問題,親愛的IT朋友們,請不要將您辛苦賺來的錢花在想要的東西上,實際上需要的卻 ...

  10. List&lt;InvestInfoDO&gt; invest = advertiseDao6.qryInvestInfo(InvestInfoDO1);怎样获得list的实体类;

    List<InvestInfoDO>  invest = advertiseDao6.qryInvestInfo(InvestInfoDO1); 怎样获得List的实体类呢,就是怎样获得I ...