SRS、EasyDarwin、ZLMediaKit、Monibuca对比分析|牛气冲天新年征文

前言

目前市面上有不少开源的流媒体服务器解决方案,常见的有SRS、EasyDarwin、ZLMediaKit和Monibuca等,咱们应该怎么选择呢?前端

正文

今天这篇文章主要介绍SRS、EasyDarwin、ZLMediaKit和Monibuca的一些对比状况,能够做为往后调研选型的参考文档。linux

SRS

SRS目前已经更新到3.0,功能和稳定性较以前的版本都有很是大的提高,新入门的同窗能够考虑直接从3.0上手。接下来,咱们从使用、配置、功能几个方面介绍SRS。android

使用步骤

咱们本身能够很是方便的搭建一套SRS服务器,具体的配置步骤以下:ios

1. 获取源码git

地址:github.com/ossrs/srsgithub

具体命令以下:web

git clone gitee.com/winlinvip/s… srs &&
cd srs/trunk && git remote set-url origin github.com/ossrs/srs.g… && git pulldocker

2. 编译macos

./configure && makenpm

其中,configure文件是支持可配置的。

3. 运行

./objs/srs -c conf/srs.conf

其中,srs.conf文件是支持可配置的,针对不一样功能模块,还有单独对应的配置文件。好比,rtmp模块对应的配置文件是rtmp.conf。

另外,咱们还能够直接运行现有的docker镜像,命令:

docker run -p 1935:1935 -p 1985:1985 -p 8080:8080 registry.cn-hangzhou.aliyuncs.com/ossrs/srs:3

主要功能

SRS做为当前很是广泛的运营级解决方案,具有很是全面的功能,包括集群、协议网关、CDN功能等,主要功能以下:

1. SRS定位是运营级的互联网直播服务器集群,追求更好的概念完整性和最简单实现的代码。

2. SRS提供了丰富的接入方案将RTMP流接入SRS, 包括推送RTMP到SRS、推送RTSP/UDP/FLV到SRS、拉取流到SRS。 SRS还支持将接入的RTMP流进行各类变换,譬如将RTMP流转码、流截图、 转发给其余服务器、转封装成HTTP-FLV流、转封装成HLS、 转封装成HDS、转封装成DASH、录制成FLV/MP4。

3. SRS包含支大规模集群如CDN业务的关键特性, 譬如RTMP多级集群、源站集群、VHOST虚拟服务器 、 无中断服务Reload、HTTP-FLV集群。

4. SRS还提供丰富的应用接口, 包括HTTP回调、安全策略Security、HTTP API接口、 RTMP测速。

5. SRS在源站和CDN集群中都获得了普遍的应用Applications。

EasyDarwin

EasyDarwin是由国内开源流媒体团队维护和迭代的一整套开源流媒体视频平台框架,Golang开发,从2012年12月建立并发展至今,包含有单点服务的开源流媒体服务器,和扩展后的流媒体云平台架构的开源框架,开辟了诸多的优质开源项目,能更好地帮助广大流媒体开发者和创业型企业快速构建流媒体服务平台,更快、更简单地实现最新的移动互联网(安卓、iOS、H五、微信)流媒体直播与点播的需求,尤为是安防行业与互联网行业的衔接。

使用步骤

运行EasyDarwin也很是方便,具体的配置步骤以下:

1. 获取源码

地址:github.com/EasyDarwin/…

具体命令以下:

mkdir EasyDarwin && cd EasyDarwin

git clone github.com/EasyDarwin/… --depth=1 EasyDarwin

2. 以开发模式运行

npm run dev

3. 以开发模式运行前端

npm run dev:www

主要功能

1. 基于Golang语言开发维护。

2. 支持Windows、Linux、macOS三大系统平台部署。

3. 支持RTSP推流分发(推模式转发)。

4. 支持RTSP拉流分发(拉模式转发)。

5. 服务端录像、检索、回放。

6. 支持关键帧缓存、秒开画面。

7. Web后台管理。

8. 分布式负载均衡。

ZLMediaKit

ZLMediaKit是一套高性能的流媒体服务框架,目前支持rtmp、rtsp、hls、http-flv等流媒体协议,支持linux、macos、windows三大PC平台和ios、android两大移动端平台。

使用步骤

1. 获取源码。

地址:github.com/xia-chu/ZLM…

具体命令以下:

#国内用户推荐从同步镜像网站gitee下载

git clone --depth 1 gitee.com/xia-chu/ZLM…

cd ZLMediaKit

#千万不要忘记执行这句命令

git submodule update --init

2. 编译(这里以linux和mac OS系统为例)

cd ZLMediaKit

mkdir build

cd build

#macOS下可能须要这样指定openss路径:cmake .. -DOPENSSL_ROOT_DIR=/usr/local/Cellar/openssl/1.0.2j/

cmake ..

make -j4

3. 运行

cd ZLMediaKit/release/linux/Debug

#经过-h能够了解启动参数

./MediaServer -h

#以守护进程模式启动

./MediaServer -d &

主要功能

1. 基于C++11开发,避免使用裸指针,代码稳定可靠,性能优越。

2. 支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4),支持协议互转。

3. 使用多路复用/多线程/异步网络IO模式开发,并发性能优越,支持海量客户端链接。

4. 代码通过长期大量的稳定性、性能测试,已经在线上商用验证已久。

5. 支持linux、macos、ios、android、windows全平台。

6. 支持画面秒开、极低延时(500毫秒内,最低可达100毫秒)。

7. 提供完善的标准C API,能够做SDK用,或供其余语言调用。

8. 提供完整的MediaServer服务器,能够免开发直接部署为商用服务器。

9. 提供完善的restful api以及web hook,支持丰富的业务逻辑。

10. 打通了视频监控协议栈与直播协议栈,对RTSP/RTMP支持都很完善。

11. 全面支持H265/H264/AAC/G711/OPUS。

Monibuca

Monibuca是一个开源的Go语言实现的流媒体服务器开发框架,采起了引擎+插件(s)的方式,实现了定制化流媒体服务器的功能。

架构图:

使用步骤

1. 源码地址

地址:github.com/Monibuca

2. 以monica为例进行介绍,monica是一个实例管理器,用于建立Monibuca的实例工程目录文件,以及控制实例的更新和重启等。

2.1 安装monica

go get github.com/Monibuca/monica

2.2 指定端口运行,默认是8000

monica -port 8001

主要功能

1. 针对流媒体服务器独特的性质进行的优化,充分利用Golang的goroutine的性质对大量的链接的读写进行合理的分配计算资源,以及尽量的减小内存Copy操做。使用对象池减小Golang的GC时间。

2. 专为二次开发而设计,基于Golang语言,开发效率更高;首创的插件机制,能够方便用户定制个性化的功能组合,更高效率的利用服务器资源。

3. 功能强大的仪表盘能够直观的看到服务器运行的状态、消耗的资源、以及其余统计信息。用户能够利用控制台对服务器进行配置和控制。点击右上角菜单栏里面的演示,能够看到演示控制台界面。

4. 纯Go编写,不依赖cgo,不依赖FFMpeg或者其余运行时,部署极其方便,对服务器的要求极为宽松。

结尾

最后附上它们四个的对比图表,这样更加的直观形象。综合对比以后,我的认为性价比最高的仍是Monibuca。

对比图表

相关文章
相关标签/搜索