常见流媒体服务器方案对比分析

简介: 目前,市面上有很多开源的流媒体服务器解决方案,常见的有 SRS、EasyDarwin、ZLMediaKit 和 Monibuca 等,我们应该怎么选择呢?今天这篇文章主要介绍 SRS、EasyDarwin、ZLMediaKit 和 Monibuca 的一些对比情况,可以作为日后调研选型和学习的参考文档。

目录

前言

正文

SRS

使用步骤

主要功能

EasyDarwin

使用步骤

主要功能

ZLMediaKit

使用步骤

主要功能

Monibuca

使用步骤

主要功能

结尾

对比图表


前言

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

正文

今天这篇文章主要介绍 SRS、EasyDarwin、ZLMediaKit 和 Monibuca 的一些对比情况,可以作为日后调研选型的参考文档。

SRS

SRS 目前已经更新到 3.0,功能和稳定性较之前的版本都有非常大的提升,新入门的同学可以考虑直接从 3.0 上手。接下来,我们从使用、配置、功能几个方面介绍 SRS。

使用步骤

我们自己可以非常方便的搭建一套 SRS 服务器,具体的配置步骤如下:

1. 获取源码

地址:https://github.com/ossrs/srs

具体命令如下:

git clone https://gitee.com/winlinvip/srs.oschina.git srs &&cd srs/trunk && git remote set-url origin https://github.com/ossrs/srs.git && git pull

2. 编译

./configure && make

其中,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、H5、微信)流媒体直播与点播的需求,尤其是安防行业与互联网行业的衔接。

使用步骤

运行 EasyDarwin 也非常方便,具体的配置步骤如下:

1. 获取源码

地址:https://github.com/EasyDarwin/EasyDarwin

具体命令如下:

mkdir EasyDarwin && cd EasyDarwin

git clone https://github.com/EasyDarwin/EasyDarwin.git --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. 获取源码。

地址:https://github.com/xia-chu/ZLMediaKit

具体命令如下:

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

git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit

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)的方式,实现了定制化流媒体服务器的功能。

架构图:


image.png


使用步骤

1. 源码地址

地址:https://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 或者其他运行时,部署极其方便,对服务器的要求极为宽松。

结尾

最后附上它们四个的对比图表,这样更加的直观形象。

对比图表

image.png

目录
相关文章
|
15天前
|
存储 Unix Linux
服务器数据恢复—DELL EqualLogic PS6100系列存储简介及发生故障后的处理方案
DELL EqualLogic PS6100系列存储采用虚拟ISCSI SAN阵列,支持VMware、Solaris、Linux、Mac、HP-UX、AIX操作系统,提供全套企业级数据保护和管理功能,具有可扩展性和容错功能。
|
22天前
|
机器学习/深度学习 弹性计算 缓存
阿里云服务器经济型e实例与通用算力型u1实例对比分析与选择指南
在阿里云服务器的实例规格中,经济型e实例和通用算力型u1实例是很多个人和普通企业级用户常见的选择,经济型e实例与通用算力型u1实例的主要区别在于性能、应用场景及价格策略。本文将详细对比这两种实例的性能、应用场景及价格策略,以供参考。
|
1月前
|
人工智能 运维 Kubernetes
87cloud案例分析:阿里云国际服务器如何支持在线教育
87cloud案例分析:阿里云国际服务器如何支持在线教育
|
1月前
|
弹性计算 安全 Linux
阿里云国际版ECS云服务器ping不通的原因分析
阿里云国际版ECS云服务器ping不通的原因分析
|
25天前
|
域名解析 弹性计算 缓存
阿里云国际云服务器全局流量分析功能详细介绍
阿里云国际云服务器全局流量分析功能详细介绍
|
2月前
|
存储 运维 监控
服务器高效运维管理方案
智能运维作为保障业务连续性和提升系统性能的关键环节,其重要性日益凸显。服务器作为承载各类应用与数据的核心基础设施,其稳定性、安全性和性能直接关系到企业的业务运行效率和用户体验
61 1
|
2月前
|
存储 弹性计算 SDN
企业级 ECS 集群的构建需要综合考虑多个因素,通过不断的比较和对比不同的方案,选择最适合企业自身需求和发展的架构。
【9月更文挑战第5天】在数字化商业环境中,构建企业级ECS(弹性计算服务)集群对提升业务稳定性、扩展性和性能至关重要。本文将比较传统物理服务器与ECS架构,分析云服务商选择(如AWS和阿里云)、实例配置(CPU/内存)、网络架构(SDN vs 传统)及存储方案(本地存储 vs 云存储),帮助企业根据自身需求选出最优方案,实现高效稳定的ECS集群部署。
69 18
|
2月前
|
存储 安全 算法
服务器数据恢复—Raid磁盘阵列的安全性分析及常见故障
出于尽可能避免数据灾难的设计初衷,RAID解决了3个问题:容量问题、IO性能问题、存储安全(冗余)问题。从数据恢复的角度讨论RAID的存储安全问题。 常见的起到存储安全作用的RAID方案有RAID1、RAID5及其变形。基本设计思路是相似的:当部分数据异常时,可通过特定算法将数据还原出来。以RAID5为例:如果要记录两个数字,可以通过再多记录这两个数字的和来达到记录冗余性的目的。例如记录3和5,同时再记录这2个数字的和8。在不记得到底是几和5的情况下,只需要用8-5就可以算出这个丢失的数字了,其余情况依此类推。
|
3月前
|
前端开发 大数据 数据库
🔥大数据洪流下的决战:JSF 表格组件如何做到毫秒级响应?揭秘背后的性能魔法!💪
【8月更文挑战第31天】在 Web 应用中,表格组件常用于展示和操作数据,但在大数据量下性能会成瓶颈。本文介绍在 JavaServer Faces(JSF)中优化表格组件的方法,包括数据处理、分页及懒加载等技术。通过后端分页或懒加载按需加载数据,减少不必要的数据加载和优化数据库查询,并利用缓存机制减少数据库访问次数,从而提高表格组件的响应速度和整体性能。掌握这些最佳实践对开发高性能 JSF 应用至关重要。
66 0
|
3月前
|
存储 设计模式 运维
Angular遇上Azure Functions:探索无服务器架构下的开发实践——从在线投票系统案例深入分析前端与后端的协同工作
【8月更文挑战第31天】在现代软件开发中,无服务器架构因可扩展性和成本效益而备受青睐。本文通过构建一个在线投票应用,介绍如何结合Angular前端框架与Azure Functions后端服务,快速搭建高效、可扩展的应用系统。Angular提供响应式编程和组件化能力,适合构建动态用户界面;Azure Functions则简化了后端逻辑处理与数据存储。通过具体示例代码,详细展示了从设置Azure Functions到整合Angular前端的全过程,帮助开发者轻松上手无服务器应用开发。
27 0
下一篇
无影云桌面