首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

主流流媒体的综合性能大 PK ( smart_rtmpd, srs, zlm, nginx rtmp )

编程知识
2024年09月19日 19:56

简述

随着互联网的发展,音视频行业越来越火,自然而然的流媒体服务器也是百花齐放。市面上也有很多种类的流媒体服务器,让人眼花缭乱。特别是对技术了解不深的朋友,更不知道怎么选择。
其实作为服务器,主要考察的无外乎几个核心指标,只要符合,基本上都是属于比较优秀的流媒体服务器。我简略说一说这些核心特性:

稳定性,性能,资源占用,并发能力,成本,可维护性

其实这些特性又不是独立存在的,相互影响彼此。比如:可维护性。可维护性分为两类,一个开发的可维护性,一个是运营的可维护性。开发的可维护性包括,软件整体架构清晰,模块耦合性低,层次清晰,
这样对于新业务的扩展比较容易,有问题也非常容易排查;这样的架构也为高效,稳定提供了基石;运营的可维护性,对于新业务的展开逻辑比较清晰,错误排查比较方便容易定位,运维人员维护性差的可能需要 3 个人,而维护性好的可以 1 个人搞定,大大节省了人员成本。同时,对硬件资源可以减少使用的台数,大大的节省运维费用。其实每一点都可以长篇累牍的去讲述它的优缺点,但偏离了本文的用意,这里就不一一列举了。

这里主要介绍几款个人感觉不错的流媒体服务器。 smart_rtmpd, nginx rtmp, srs, zlm 。明白人一眼就看出来,这些主要是 C, C++ 语言实现的服务器,没错。就像有的借助小汽车的底盘,有的借助摩托车地盘,
从起点很多别的语言的流媒体服务器就输了。 C, C++ 基本上属于性能最好的语言,性能上 C > C++, 不要和我抬杠说汇编。:)

名字 开发语言
nginx rtmp C
smart_rtmpd C++
srs C++
zlm C++

基本情况介绍

smart_rtmpd 服务器

github 地址: https://github.com/superconvert/smart_rtmpd
gitee 地址: https://gitee.com/superconvert/smart_rtmpd

免费软件,支持 rtmp, rtsp, srt 推流,rtmp, rtsp, srt, hls, dash, http-flv, ws-flv, webrtc 拉流;支持 webrtc sfu 功能, 支持 VOD 功能,支持直播和录像; 特点,稳定,高效,简洁,跨平台,解压及运行,支持的操作系统 Windows, Ubuntun, CentOS, Debian, FreeBSD, ARM 64,无第三方依赖,基本上内核 + glibc 就能运行,软件体积非常小,配置相对简单,由于出道比下面三个晚,名气相对没有下面三个大。

nginx rtmp 服务器

github 地址:https://github.com/arut/nginx-rtmp-module
开源软件,由于 nginx rtmp 依托 nginx 底层,所以性能也是相对比较好的,但功能相对于其余三个,相对比较少一点,也是支持跨平台,需要准备第三方库及编译环境,针对不同的操作系统需要不同的环境配置进行编译适配,过多的功能和说明,请参考它们的 README.md

srs 服务器

github 地址:https://github.com/ossrs/srs
开源软件:srs 基于协程技术,对于单进程的能力挖掘相当强悍,单对于多核应用同时对于 webrtc 的功能支持也是比较全面。也是支持跨平台,需要配置对应的编译环境,过多的功能和说明,请参考它们的 README.md

zlm 服务器

github 地址:https://github.com/ZLMediaKit/ZLMediaKit
开源软件:目前是一个庞大的开发框架,不仅提供服务器的一些功能,还提供一些基础组件,对于国产化的相关规范支持的比较全。过多的功能和说明,请参考它们的 README.md

测试环境

测试一般分为三端,推流端,服务器,拉流端,为了保证公平公正合理的情况下,测试过程中,推流端不做任何更改,推流码率固定;拉流端不做任何更改;服务器端依次运行各个流媒体服务器软件,其它软硬件环境均保持不变。同样的硬件,既同样的 CPU, 内存,硬盘,网络。

软件条件说明:

服务器操作系统 Ubuntu 24.04.1 LTS ( 虚拟机 ) , CPU: 2 , Memory: 8G

软件 编译器 版本或源码分支 说明
smart_rtmpd gcc 5.4.0 2024.09.16 乌班图多线程版本 老的编译器进行编译,新编译器应该性能会更好
nginx rtmp gcc 13.2.0 源码分支:2fb11dffaedc5af66b1442b0315c54a4b9da585d 大家如果想验证测试结果可以自行选择最优分支进行验证
srs gcc 13.2.0 源码分支:747831154742e6e4dee9b16f3a29fc6e01904e8c 大家如果想验证测试结果可以自行选择最优分支进行验证
zlm gcc 13.2.0 源码分支:da704ab2f1184c3c87be64fe18c9f413de101d0f 大家如果想验证测试结果可以自行选择最优分支进行验证

推流软件

软件 版本
OBS 29.0.2
ffmpeg.exe version 4.3.2-2021-02-02-full_build-www.gyan.dev Copyright (c) 2000-2021 the FFmpeg developers

拉流软件

软件 版本
rtmpstress.exe
ffplay.exe version 4.3.2-2021-02-02-full_build-www.gyan.dev Copyright (c) 2003-2021 the FFmpeg developers

测试场景及数据

测试分为三个场景,时延测试,拉流测试,推流测试

时延测试

推流 OBS + 浏览器网页截屏 ( 1920x1080, 8192 kb/s )
浏览器:在线秒表网页
测试协议:rtmp 推拉流

拉流 ffplay -fflags nobuffer rtmp://192.168.23.141:1935/live/stream
测试场景: 一路推流一路拉流,主要测试延时

说明 smart rtmpd srs zlm nginx rtmp
1.117 1.506 1.635 1.334
1.337 1.635 2.451 1.333
1.247 1.507 2.194 1.334
1.246 1.504 1.721 1.291
1.335 1.644 3.441 1.773
1.287 1.505 1.677 1.290
1.258 1.460 1.635 1.291
1.247 1.590 1.634 1.290
1.374 1.548 1.677 1.204
单位秒 1.376 1.635 1.592 1.376

拉流测试

推流 OBS ( 4096 kb/s )
测试协议:rtmp 推拉流
测试时长:10 分钟
拉流 rtmpstress.exe 一路推 800 路拉,主要系统指标

说明 smart rtmpd srs zlm nginx rtmp
86% 88% 189% 95.40%
123% 98% 200% 97.40%
82% 99% 143% 84.30%
23% 53% OBS 断开,拉流 187 94.80%
98% 42% 35.00%
89% 6% 95.50%
97% 4% 40.00%
102% OBS 断开,拉流全部断开 94.80%
81% 26.20%
38% 95.00%
CPU 随机抽取 10 次
内存 0.50% 3.30% 0.90% 0.30%

结论 平均 CPU 占用率 smart_rtmpd 与 nginx rtmp 旗鼓相当,CPU 占用率相对较低,对于内存的占用也是相对较低,推拉流过程相对平稳,无异常,但 nginx rtmp 业务相对于其它三个服务器业务是最简单的,缓存或 IO 都是简化处理的,其次它是纯 C 实现的,语言上对性能的优化占有天然的优势。
压测过程中 srs 和 zlm 推流一段时间,推流端会产生断开现象,拉流端会出现全部断开的现象。
smart_rtmpd 的拉流链接由 800 路降低到 724 路, 而 nginx rtmp 的拉流链接数由 800 路降低到 664 路。
srs 协程模型只能用一个 CPU ,所以理论上 CPU 不会超过 100%

推流测试

说明 smart rtmpd srs zlm nginx rtmp
CPU 13.7% ~ 200% 23.9% ~100% 97.4% ~ 200% 52.5% ~93.8%
内存 13.60% 6.00% 11.90% 0.40%
说明 top 查看网卡中断和服务器进程交替霸榜,CPU 大部分时间占用和 nginx 相差不多,但 CPU 最大值大于 nginx 。推流长时间有部分链接断开 "协程(单进程,CPU 最大 100%, 推流长时间推流链接大量断开 )" 推流长时间有部分链接断开 top 查看网卡和服务器进程交替霸榜,表现相当不错,推流长时间链接没有断开

结论: CPU 表现相对优秀的是 nginx rtmp, smart_rtmpd
内存占用 smart_rtmpd 最多,不过缓冲队列是可配置的,没有降低配置降低内存占用,nginx rtmp 的内存占用比较优秀不过 smart_rtmpd, srs, zlm 的业务功能都比 nginx 复杂很多,内存占用过多是理所当然的,nginx 几乎就是做了一个简单解流封流转流的功能,所以系统的占用需求是最小的"

收尾

各位老铁想不想也想测试一下对比一下各个流媒体的性能呢?包括软件的便利性,兼容性,部署成本,维护成本,可维护性做一个全面的对比。欢迎各位老铁拿出您的数据与结论,选出您最喜欢的流媒体服务器。

From:https://www.cnblogs.com/superconvert/p/18421322
本文地址: http://shuzixingkong.net/article/2136
0评论
提交 加载更多评论
其他文章 分享3款开源、免费的Avalonia UI控件库
Avalonia介绍 Avalonia是一个强大的框架,使开发人员能够使用.NET创建跨平台应用程序。它使用自己的渲染引擎绘制UI控件,确保在Windows、macOS、Linux、Android、iOS和WebAssembly等不同平台上具有一致的外观和行为。这意味着开发人员可以共享他们的UI代码
分享3款开源、免费的Avalonia UI控件库 分享3款开源、免费的Avalonia UI控件库 分享3款开源、免费的Avalonia UI控件库
c语言 宏的一些深层应用(##,#,宏函数)
"##" 宏拼接 #define CONCATENATE(a, b) a ## b CONCATENATE(student_, 1) // 将a和b拼接起来变成一个新的变量 -> student_1 #define CONS(a,b) int(a##e##b) CONS(2
k8s 中的 Ingress 简介【k8s 系列之三】
Ingress 的重要性不言而喻,它不仅统一了集群对外访问的入口,还提供了高级路由、七层负载均衡、SSL终止等关键功能,同时支持动态配置更新、灰度发布等高级特性。下文将进行详细介绍。
k8s 中的 Ingress 简介【k8s 系列之三】 k8s 中的 Ingress 简介【k8s 系列之三】 k8s 中的 Ingress 简介【k8s 系列之三】
从零开始掌握Kubernetes: Pod和Deployment的幕后故事
1. 引言 在如今的技术世界中,随着微服务架构的广泛应用和云原生理念的兴起,应用程序的开发、部署和管理发生了翻天覆地的变化。容器技术的出现使得开发者可以轻松地将应用及其所有依赖打包在一个轻量级、可移植的容器中,这种方式大大提升了应用的部署效率和一致性。然而,随着应用规模的扩大和微服务数量的增加,管理
【原创】解决NasCab掉进程,NasCab进程维护
最近对象吐槽家里服务器又连不上,看不了考研视频了。 我掏出手机一试,确实连不上。家里的服务器是Win11平台,用NasCab管理的视频文件,然后通过frpc做的内网穿透。 我们在外面的图书馆,连不上无非是三种情况:服务器关机了、NasCab内网穿透插件掉了、NasCab进程掉了。 远程登录服务器,发
【原创】解决NasCab掉进程,NasCab进程维护
Windows 调试工具课程
本文是我在集团内部上的课程记录而成的博客内容。在本次课程里面将和大家介绍一些在 Windows 上常用的调试工具,以及调查问题的常见套路。适合于伙伴们入门 Windows 调试 本文以下内容是采用原本课程课件里面的一页页的内容组装而来,过程中补充一些讲课时的内容 本次课程里面核心的内容是调试工具,调
Windows 调试工具课程 Windows 调试工具课程 Windows 调试工具课程
深入理解ConcurrentHashMap
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进行put操作,调用了HashMap的putVal(),具体原因: 假设两个线程A、B都在进行put操作,并且hash函数计算出的插入下标是相同的; 当线程A执行完第六行由于时间片耗尽导致被挂起,而线程B得到时间片后在该下标处
深入理解ConcurrentHashMap 深入理解ConcurrentHashMap 深入理解ConcurrentHashMap
程序员编写技术文章需要的四个辅助神器 ,强烈建议收藏 !
编写技术文章是程序员分享经验和记录学习成果的重要方式。 为了让写作变得更轻松,有许多实用工具可以帮助提升效率,比如 Markdown 编辑器、画图工具等。 接下来,笔者将介绍四款简单实用的工具,帮助程序员更轻松地编写技术文章。 1 Typora :Markdown 编辑器 Typora 是一款简洁而
程序员编写技术文章需要的四个辅助神器 ,强烈建议收藏 ! 程序员编写技术文章需要的四个辅助神器 ,强烈建议收藏 ! 程序员编写技术文章需要的四个辅助神器 ,强烈建议收藏 !