需求背景

EasyDarwin开发团队维护EasyDarwin开源流媒体服务器也已经很多年了,之前也陆陆续续尝试过很多种服务端录像的方案,有:在EasyDarwin中直接解析收到的RTP包,重新组包录像;也有:在EasyDarwin中新增一个RecordModule,再以RTSPClient的方式请求127.0.0.1自己的直播流录像,但这些始终都没有成气候;

我们的想法是能够让整套EasyDarwin的系统更加灵活起来,各个服务单元都非常内聚地做自己的本职工作,EasyDarwin是流媒体分发服务器,那就只做流媒体分发,,EasyCMS是设备长连接管理服务器,那就只做TCP Session维护,,EasyUMS是接口服务器,那就实现基础的用户管理/设备管理/后台和接口,,同样,我们计划做的EasyRMS录像服务器,那就专门做拉流录像,然后各个服务器之间采用http接口+redis相互沟通控制:

EasyDarwin开源平台架构

乍一看整个EasyDarwin开源平台的架构是不容易一次性弄懂其架构思路和运行流程的,先从基本的架构想法上来说,就是上面说到的,各个单元干各自擅长的事情,管理连接的就管理连接、直播分发的就直播分发、录像的就录像、对外接口的就对外接口,当用户客户端EasyClient需要到各种不同数据的时候,就找不同的服务单元获取数据即可:

  • 客户端需要获取所有在线和离线的设备列表:

    EasyClient只需要在调用完成EasyUMS的登录接口之后,从EasyUMS获取相应的列表关系接口,返回给客户端进行展示;

  • 客户端要获取直播流,调用EasyCMS获取直播流的接口,获取到直播播放地址,进行播放;

  • 客户端要控制设备转动、向设备发送喊话,调用EasyCMS的ptz、talk接口,即可实现转动控制与喊话的功能;

  • 客户端要获取设备录像列表,直接向EasyUMS获取录像的列表,客户端在通过录像检索的结果,找EasyRMS进行录像回放;

从这个上面的基本思想上可以看出,各个服务单元都做的是自己非常单一功能的事情,这样就能很好的保证系统的高可扩展性和架构的稳定性,通过嫁接各种不同功能类型的服务单元,就可以变换实现非常多的场景的需求;

EasyRMS的架构

经过一周时间的技术调研,再结合之前版本的EasyRMS的成功实践经验与整体开源的要求,我们决定采用:EasyDarwin框架+ffmpeg实现EasyRMS:

  • EasyDarwin的主体框架我们成功运行在很多案例中了,能够成功嫁接到EasyRMS中来,做为底层基础结构,对外提供http+json接口、管理录像Session、以及可配合redis扩展实现分布式录像功能;

  • ffmpeg毫无疑问,目前流媒体中最牛x的项目,通用性和功能性极强,能够直接面向各种视频源格式:RTSP、HTTP、RTMP、RTP、UDP,录像输出成m3u8+ts;

  • 录像管理结构,可以采用上述的m3u8+ts,以目录形式管理,按照:设备ID/年月日/时分秒 的目录结构进行录像,最小检索单元是目录级的m3u8,这样检索服务检索出来的录像可以直接面向全平台终端回放,非常通用;

EasyRMS的迭代方向

按照上一节中的架构,EasyRMS还是一个单纯的录像服务器,那么后续,还要为EasyRMS配套开发一个录像计划与录像管理服务:

  • 录像计划,定时录像;

  • 录像管理,7天、30天录像管理,磁盘管理;

  • 录像图形化归档,这个就是上层做入库,图形化报表的功能了;

我们计划采用node来开发这种配套的录像管理服务;

关注EasyRMS项目

EasyRMS开源项目:https://github.com/EasyDarwin/EasyRMS

EasyDarwin开源项目:https://github.com/EasyDarwin

获取更多信息

邮件:support@easydarwin.org

WEB:www.EasyDarwin.org

Copyright © EasyDarwin.org 2012-2017

EasyDarwin开源流媒体云平台之EasyRMS录播服务器功能设计的更多相关文章

  1. EasyDarwin开源流媒体云平台支持EasyCamera摄像机、EasyCamera手机直播监控、EasyNVR等多终端接入

    云平台架构 EasyDarwin开源流媒体云平台目前已经包括了EasyCMS中心管理服务.EasyDarwin流媒体服务.EasyCamera设备端(支持Arm_Linux.Android.PC).E ...

  2. EasyDarwin开源流媒体云平台设计与实现(分布式+负载均衡)

    前言 早在2013年我就设计了一套架构非常简单的分布式流媒体服务器平台<基于Darwin实现的分布式流媒体直播服务器系统>,当时的考虑如今看来有诸多的细节点没有考虑到:1.CMS是单点部署 ...

  3. EasyDarwin开源流媒体云平台之语音对讲功能设计与实现

    本文由EasyDarwin开源团队成员Alex贡献:http://blog.csdn.net/cai6811376/article/details/52006958 EasyDarwin云平台一直在稳 ...

  4. EasyCamera Android安卓移动视频监控单兵设备接入EasyDarwin开源流媒体云平台

    前言 随着Android系统的不断更新和发展,现在越来越多的硬件产品选择用安卓系统作为运行环境,电视机,机顶盒.门禁.行车记录仪.车载系统.单兵设备等等,Android系统底层还是Linux,但对上层 ...

  5. EasyDarwin开源流媒体云平台之云台ptz控制设计与实现

    本文转自EasyDarwin开源团队成员Alex的博客:http://blog.csdn.net/cai6811376/article/details/51912692 近日,EasyDarwin云平 ...

  6. EasyDarwin开源流媒体云平台VS调试断点提示“还没有为该文档加载任何符号”的解决办法

    本文转自EasyDarwin开源团队成员Alex的博客:http://blog.csdn.net/cai6811376/article/details/52063666 近日,我们EasyDarwin ...

  7. EasyDarwin开源流媒体云平台中boost Base64编解码后与源长度不匹配的bug

    本文转自EasyDarwin团队Alex的博客:http://blog.csdn.net/cai6811376 EasyDarwin云平台中部分协议使用了Base64编码昨晚报文通信的载体.比如在对摄 ...

  8. 开源流媒体云视频平台EasyDarwin中EasyCMS服务是如何进行命令转发和消息路由的

    EasyCMS介绍 EasyCMS做为EasyDarwin开源流媒体云平台解决方案的一部分,主要进行的是设备的接入和Session(DeviceSession & ClientSession) ...

  9. EasyDarwin开源流媒体项目

    本文转自EasyDarwin CSDN官方博客:http://blog.csdn.net/easydarwin EasyDarwin是由国内开源流媒体团队维护和迭代的一整套开源流媒体视频平台框架,从2 ...

随机推荐

  1. 【CF711C】Coloring Trees(DP)

    题意:给你n个数字,一共有m种,如果某数为0则该数为空,空的地方可以填任意种类数,但每填一个数字都要花费一定的费用, 从头到尾,所有相邻且相同的数字看作一个集合,求使n个数字的集合数为k所需的最小费用 ...

  2. 浅谈js函数三种定义方式 & 四种调用方式 & 调用顺序

    在Javascript定义一个函数一般有如下三种方式: 函数关键字(function)语句: function fnMethodName(x){alert(x);} 函数字面量(Function Li ...

  3. 转 php simple test

    转自 后期移至 以下为汪大哥写的 yunlian服务监控 如何写监控代码 首先在tests目录下新建一个文件xxx.php.其中xxx为你的服务名. class XxxTestCase extends ...

  4. 获取当前网络中的电脑数目及MAC-通过MAC查找IP-通过IP查询机器名

    Microsoft Windows [版本 ] 版权所有 (c) Microsoft Corporation.保留所有权利. C:\Users\Administrator>netsh netsh ...

  5. LightOJ 1140: How Many Zeroes? (数位DP)

    当前数位DP还不理解的点: 1:出口用i==0的方式 2:如何省略状态d(就是枚举下一个数的那个状态.当然枚举还是要的,怎么把空间省了) 总结: 1:此类DP,考虑转移的时候,应当同时考虑查询时候的情 ...

  6. 松鼠的新家(lca)

    洛谷—— P3258 [JLOI2014]松鼠的新家 题目描述 松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都是唯一的 ...

  7. uva 11374 最短路+记录路径 dijkstra最短路模板

    UVA - 11374 Airport Express Time Limit:1000MS   Memory Limit:Unknown   64bit IO Format:%lld & %l ...

  8. 详解RocketMQ中的consumer

    上述就是MQ中有关Consumer的类图,下面来介绍一下每个类 1.MQAdmin:底层类,上篇博客已经提过,就不再此重提 2.MQConsumer:Consumer公共的接口,常用的方法如下 如果消 ...

  9. NN优化方法对照:梯度下降、随机梯度下降和批量梯度下降

    1.前言 这几种方法呢都是在求最优解中常常出现的方法,主要是应用迭代的思想来逼近.在梯度下降算法中.都是环绕下面这个式子展开: 当中在上面的式子中hθ(x)代表.输入为x的时候的其当时θ參数下的输出值 ...

  10. AngularJS的ng-repeat显示属性名和属性值

    代码下载:https://files.cnblogs.com/files/xiandedanteng/AngularJSAuthorRepeat.rar 代码: <!DOCTYPE HTML P ...