基于Darwin实现的分布式流媒体直播服务器系统
各位EasyDarwin开源项目的爱好者,您好,这篇博客的年限有点老了,目前EasyDarwin已经采用全新的云平台架构,详细可以参考博客:http://blog.csdn.net/xiejiashu/article/details/51581003,您也可以直接访问EasyDarwin开源项目的官网:www.easydarwin.org,获取最新EasyDarwin项目信息;
系统功能介绍:
系统基于RTSP协议和Darwin Streaming Server(以下简称DSS)实现,具有设备接入和控制、分布式流媒体服务器部署、流媒体转发与负载均衡、实时音视频控制等功能,同时支持视频直播与点播功能,整套系统可跨平台运行(Windows/Linux)。
系统功能模块:
1、CMS:中心管理服务器,全局唯一运行。中心管理服务器接入来自设备端的注册连接、其他服务节点的连接(如流媒体服务器、回放点播服务器等)、客户端的请求连接。所有关于设备连接的维护与管理、控制命令的下发、设备信息上报解析,客户端请求控制,负载均衡等控制均由中心管理服务器进行。
2、EasyDarwin:流媒体服务器,可分布式多点部署。流媒体服务器作为整套系统的流媒体服务节点单元,可多点、分布式部署于多个网络环境中,以实现具体的流媒体直播转发、点播回放等需求。
3、EasyCamera:设备模拟器(For Win32)。模拟系统设备,连接并保活至中心管理服务器,接收来自CMS的控制命令。采集Windows摄像头视频与MicroPhone音频输入,分别利用x264和FAAC进行H264及AAC编码,再通过RTSP和RTP,将实时音视频数据推送到流媒体服务器,并由流媒体服务器进行转发和分发,实现直播。
系统设计框架:
系统设计的思路最早源于我的一篇博客:http://blog.csdn.net/xiejiashu/article/details/8739509,如今已在这个思路上面做了许多修改,能够分布式接入多个流媒体转发服务器,并且能够均衡地将转发的压力分配到多个流媒体服务器上去,框架图如是:
系统演示下载:
本系统后续开发及更新为:EasyDarwin开源云视频平台,最新演示版本下载地址:www.easydarwin.org,后续更新也将在博客中发布。
系统主要配置:
1、CMS/CMS.xml
rtsp_port:配置CMS对rtsp的监听端口,所有的设备、流媒体服务器、客户端统一由此端口接入,默认为554端口。
2、EasyDarwin/EasyDarwin.xml
rtsp_port:流媒体转发端口,设备端推送流媒体的端口,默认8554。
cms_addr:中心管理服务器的IP地址(尽量不要用本地回环地址127.0.0.1,除非CMS、EasyDarwin、EasyCamera、客户端都在一台机器上)。
cms_port:中心管理服务器rtsp监听端口,也就是上面CMS中配置的端口,如554端口。
3、EasyCamera/config.ini
server:中心管理服务器CMS的域名或者IP。
port=554:中心管理服务器rtsp的监听端口,也就是1中配置的端口,如554端口。
device=live:设备ID,不可重复,否则设备无法注册到CMS。
suffix=sdp:不变即可。
系统部署:
1、CMS:运行start.bat,以Debug模式运行CMS。
2、EasyDarwin:运行start.bat,以Debug模式运行EasyDarwin。
3、运行easyCamera.exe(注:需要配备USB摄像头)。
获取视频:
用VLC、CorePlayer等请求网络串流:rtsp://[CMS_IP]:[CMS_Port]/[Device_ID].sdp,例如:服务器地址192.168.1.3,端口554,设备ID为live,请求地址为:rtsp://192.168.1.3:554/live.sdp
注意!:
服务器注意设置端口例外或者关闭防火墙
运行效果:
演示图1:流媒体服务器与设备live分别注册到中心管理服务器
演示图2:EasyDarwin流媒体服务器运行
演示图3:Windows设备模拟器连接到中心管理服务器
演示图4:用vlc请求设备[live]的实时视频
演示图5:用vlc请求设备[live]的实时视频
用Windows模拟器演示,实时视频延时在1s左右,延时原因在模拟器采集编码端,经过测试,用专门的编码芯片设备发布实时视频,无延时感觉,后面将继续修复Win32模拟器此问题。
后续更新:
未完待续……
------------------------------------------------------------
本文转自www.easydarwin.org,更多开源流媒体解决方案,请关注我们的微信:EasyDarwin
基于Darwin实现的分布式流媒体直播服务器系统的更多相关文章
- 分布式流媒体直播服务器系统 For Linux
在之前的一篇<基于Darwin实现的分布式流媒体直播服务器系统>中,我们配置了在Win32下面的流媒体直播系统,今天我们分享一下在Linux下面EasyDSS分布式直播服务器系统的配置. ...
- day122:MoFang:OSSRS流媒体直播服务器&基于APICloud的acLive直播推流模块实现RTMP直播推流
目录 1.docker安装OSSRS流媒体直播服务器 2.基于APICloud的acLive直播推流模块实现RTMP直播推流 3.直播流管理 1.docker安装OSSRS流媒体直播服务器 1.OSS ...
- 流媒体直播服务器:Bull-Live-Server
Bull Live Server 简称 BLS ,旨在使用C++语言提供强大功能和高性能的流媒体直播服务器. 为何要写 BLS ? 1.simple rtmp server https://githu ...
- 收藏:视频网站(JavaEE+FFmpeg)/Nginx+ffmpeg实现流媒体直播点播系统
FFmpeg安装(windows环境)http://www.cnblogs.com/xiezhidong/p/6924775.html 最简单的视频网站(JavaEE+FFmpeg)http://bl ...
- 【原创+史上最全】Nginx+ffmpeg实现流媒体直播点播系统
#centos6.6安装搭建nginx+ffmpeg流媒体服务器 #此系统实现了视频文件的直播及缓存点播,并支持移动端播放(支持Apple和Android端) #系统需要自行安装,流媒体服务器配置完成 ...
- 基于libRTMP的流媒体直播之 AAC、H264 推送
这段时间在捣腾基于 RTMP 协议的流媒体直播框架,其间参考了众多博主的文章,剩下一些细节问题自行琢磨也算摸索出个门道,现将自己认为比较恼人的 AAC 音频帧的推送和解析.H264 码流的推送和解析以 ...
- 【基于libRTMP的流媒体直播之 AAC、H264 推送】
这段时间在捣腾基于 RTMP 协议的流媒体直播框架,其间参考了众多博主的文章,剩下一些细节问题自行琢磨也算摸索出个门道,现将自己认为比较恼人的 AAC 音频帧的推送和解析.H264 码流的推送和解析以 ...
- 【基于libRTMP的流媒体直播之 AAC、H264 解析】
前文我们说到如何在基于 libRTMP 库的流媒体直播过程中推送 AAC .H264 音视频流.本文以上文为基础,阐释如何对 RTMP 包进行解析.重组得到原始的 AAC 音频帧以及 H264 码流. ...
- 基于nginx的rtmp直播服务器(nginx-rtmp-module实现)
首先,在搭建服务之前先了解下目前主流的几个直播协议: 1.RTMP: 实时消息传输协议,Real Time Messaging Protocol,是 Adobe Systems 公司为 Flash 播 ...
随机推荐
- 洛谷——P1996 约瑟夫问题
P1996 约瑟夫问题 (什么?!要给学弟学妹讲约瑟夫问题?!难道就不怕我给他们讲错了吗?! 啊啊啊,为了不给学弟学妹们讲错,蒟蒻表示要临阵磨一下刀...) 题目背景 约瑟夫是一个无聊的人!!! 题目 ...
- noip2013/day1/1/转圈游戏
总时间限制: 10000ms 单个测试点时间限制: 1000ms 内存限制: 128000kB 描述 n 个小伙伴(编号从 0 到 n-1)围坐一圈玩游戏.按照顺时针方向给 n 个位置编号,从 ...
- jquery_final
第一章 jquery入门 1,jquery的引入 <script type="text/javascript" src="js/jquery-3.3.1.min.j ...
- path.join 与 path.resolve 的区别
1. 对于以/开始的路径片段,path.join只是简单的将该路径片段进行拼接,而path.resolve将以/开始的路径片段作为根目录,在此之前的路径将会被丢弃,就像是在terminal中使用cd命 ...
- Java分布式服务框架Dubbo初探(待实践)
Dubbo是什么? Dubbo[]是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封 ...
- [js]数组栈和队列操作
写在前面 在项目中,对数组的操作还是比较常见的,有时候,我们需要模拟栈和队列的特性才能实现需求,这里记录一下这个知识点. 栈 栈(stack)又名堆栈,它是一种运算受限的线性表.其限制是仅允许在表的一 ...
- ArcObject开发,“异常在 ESRI.ArcGIS.Version.dll”错误
“System.DllNotFoundException”类型的未经处理的异常在 ESRI.ArcGIS.Version.dll 中发生 其他信息: 无法加载 DLL“ArcGISVersion.dl ...
- Jsp2.0自定义标签(第三天)——EL表达式的使用
1.提出问题: 我们经常会看到这样的jsp页面代码: 浏览器显示: 为什么会在页面输出:Hello World ,${per}究竟是如何找到“Hello World”的呢? 2.分析问题: 要想解决 ...
- Retrofit 使用flatmap操作符时处理错误、异常
在实际项目(Retrofit+RxJava框架)中,有时需要先登录,获取token后再去获取用户信息,此时我们使用flatmap操作符比较好. 在RESTResult对象里,包括请求返回的状态:失败还 ...
- APNS push server端 SSL3.0 转 TLS (iPhone苹果推送服务)
(转载此文,请说明原文出处) 苹果的官方公布 Update to the Apple Push Notification Service October 22, 2014 The Apple Push ...