zoukankan      html  css  js  c++  java
  • 基于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 

  • 相关阅读:
    python二维数组的创建
    使用js制作 下拉选择日期列表 (即日期选择器)
    onblur事件和onfocus事件失效
    jQuery中$("input")与$(":input")的区别
    jQuery之绑定焦点事件(焦点事件失效)
    django.db.utils.OperationalError: (2003, "Can't connect to MySQL server on ‘127.0.0.1’)
    UCI机器学习数据库
    Cannot open the disk 'F:centos64-finalCentOS 64-bitCentOS 64-bit.vmdk' orone of the snapshot disk
    mr本地运行的几种模式
    序列化为XML
  • 原文地址:https://www.cnblogs.com/babosa/p/9218003.html
Copyright © 2011-2022 走看看