从零开始学习EasyDarwin(概述篇)

EasyDarin是什么  EasyDarwin是由国内开源流媒体团队维护的一款开源流媒体平台框架,从2012年12月创建并发展至今,从原有的单服务的流媒体服务器形式,扩展成现在的云平台架构的开源项目,更好地帮助广大流媒体开发者和创业型企业快速构建流媒体服务平台。EasyDarwin适合做什么  安防视频监控,移动互联网(安卓、IOS、微信)流媒体直播与点播,流媒体视

大家好,又见面了,我是你们的朋友全栈君。

  • EasyDarin是什么

       EasyDarwin是由国内开源流媒体团队维护的一款开源流媒体平台框架,从2012年12月创建并发展至今,从原有的单服务的流媒体服务器形式,扩展成现在的云平台架构的开源项目,更好地帮助广大流媒体开发者和创业型企业快速构建流媒体服务平台。

  • EasyDarwin适合做什么

      安防视频监控,移动互联网(安卓、IOS、微信)流媒体直播与点播,流媒体视频服务器 
      

  • EasyDarwin官网及Github项目地址 
    官方网址:http://www.easydarwin.org/ 
    Github地址:https://github.com/EasyDarwin/EasyDarwin 
    目录结构如下: 
    这里写图片描述
    目前EasyDarwin流媒体平台整套解决方案包括有: 
    EasyDarwin(流媒体服务) 
    EasyCamera(开源流媒体摄像机) 
    EasyPlayer(开源流媒体播放器) 
    工具库(EasyHLS / EasyRTMP / EasyRTSPClient / EasyPusher / EasyAACEncoder) 
    注意:EasyDarwin有两个私有自定义的Module:拉模式转发模块EasyRelayModule和HLS直播模块EasyHLSModule,这里用到的libEasyRTSPClient、libEasyPusher、libEasyHLS三个库文件都是没有开源的,他们都是EasyDarwin团队开发的SDK库,但这些都是完全免费使用的。 
    EasyDarwin的编译和部署可以参考官方的文档 
    http://doc.easydarwin.org/EasyDarwin/README/#_1 
    一.主体框架 
      DSS的核心服务器部分是由一个父进程所fork出的一个子进程构成,该父进程就构成了整个流媒体服务器。父进程会等待子进程的退出,如果在运行的时候子进程产生了错误从而退出,那么父进程就会fork出一个新的子进程。可以看出,网络客户和服务器直接的对接是由核心服务器来完成的。网络客户RTSPoverRTP来发送或者接受请求。服务器就通过模块来处理相应的请求并向客户端发送数据包。

      核心流媒体服务通过创建四种类型的线程来完成自己的工作,具体如下:

      服务器自己拥有的主线程。当服务器需要关闭检查,以及在关闭之前记录相关状态打印相关统计信息等任务处理时,一般都是通过这个线程来完成的。

      空闲任务线程。这个任务线程是用来对一个周期任务队列的管理,主要管理两种任务,超时任务和Socket任务。

      事件线程。套接口相关事件由事件线程负责监听,当有RTSP请求或者收到RTP数据包时,事件线程就会把这些实践交给任务线程来处理。

      任务线程。任务线程会把事件从事件线程中取出,并把处理请求传递到对应的服务器模块进行处理,比如把数据包发送给客户端的模块,在默认情况下,核心服务器会为每个处理器核创建一个任务线程。

       
    二.模块分类 
      流媒体服务器使用模块来响应各种请求及完成任务。有三种类型的模块:

      (1).内容管理模块

      媒体源相关的RTSP请求与响应,我们通过内容管理模块来管理,每个模块都用来对客户的需求进行解释并做相应处理,例如读取和解析模块支持的文件,或者请求的网络源信息,并通过RTP等方式响应。

      内容管理模块有以下几个:

      QTSSFileModule,

      QTSSReflectorModule,

      QTSSRelayModule,

      QTSSMP3StreamingModule。

      (2).服务器支持模块

      服务器支持模块执行服务器数据的收集和记录功能。

      服务器模块包括:

      QTSSErrorLogModule,

      QTSSAccessLogModule,

      QTSSWebStatsModule,

      QTSSWebDebugModule,

      QTSSAdminModule,

      QTSSPOSIXFileSystemModule。

      (3).访问控制模块

      访问控制模块提供鉴权和授权功能,以及操作URL路径提供支持。

      访问控制模块包括:

      QTSSAccessModule,

      QTSSHomeDirectoryModule,

      QTSSHttpFileModule,

      QTSSSpamDefenseModule。

二.EasyDarwin特性(后续补充)

支持MP4、3GPP等文件格式;

支持MPEG-4、H.264等视频编解码格式;

支持RTSP流控协议,支持HTTP协议;

支持RTP流媒体传输协议;

支持单播和组播;

支持基于Web的管理;

具有完备的日志功能。






版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/125433.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号