基于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

注意!
服务器注意设置端口例外或者关闭防火墙


运行效果


CMS

演示图1:流媒体服务器与设备live分别注册到中心管理服务器


EasyDarwin

演示图2:EasyDarwin流媒体服务器运行


easyIpCamera

演示图3:Windows设备模拟器连接到中心管理服务器


VLC

演示图4:用vlc请求设备[live]的实时视频



演示图5:用vlc请求设备[live]的实时视频

用Windows模拟器演示,实时视频延时在1s左右,延时原因在模拟器采集编码端,经过测试,用专门的编码芯片设备发布实时视频,无延时感觉,后面将继续修复Win32模拟器此问题


后续更新
未完待续……

------------------------------------------------------------

本文转自www.easydarwin.org,更多开源流媒体解决方案,请关注我们的微信:EasyDarwin 

阅读更多
版权声明:本文为EasyDarwin开源社区原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiejiashu/article/details/14103231
上一篇Darwin做直播时对ReflectorSession引用数的控制
下一篇我读过的最好的epoll讲解
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭