“这是我参与8月更文挑战的第20天,活动详情查看:8月更文挑战”
SRS与主流流媒体服务器的对比
目前主流的流媒体服务器主要有 nginx-rtmp、crtmpd、wowza、red5、adobe fms等。
支持的网络协议对比
协议是服务器的基础,协议决定了关键应用场景,譬如毫秒级别延时只能用udp,秒级别延迟用RTMP,十秒级别可以用HLS。
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|---|---|---|---|---|---|
| RTMP | Stable | Stable | Stable | Stable | Stable |
| HLS | Stable | Stable | X | Stable | Stable |
| HTTP FLV | Stable | X | X | X | X |
| HLS(aonly) | Stable | X | X | Stable | Stable |
| HDS | Experiment | X | X | Stable | Stable |
| MPEG-DASH | Experiment | X | X | X | X |
| HTTP Server | Stable | Stable | X | X | Stable |
性能对比
单进程的SRS支持7k以上的下行并发,如果码率是1Mbps,妥妥的7Gbps的下行流量。
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|---|---|---|---|---|---|
| Concurrency | 7.5k | 3k | 2k | 2k | 3k |
| MultipleProcess | Stable | Stable | X | X | X |
| RTMP Latency | 0.1s | 3s | 3s | 3s | 3s |
| HLS Latency | 10s | 30s | X | 30s | 30s |
提供服务对比
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|---|---|---|---|---|---|
| DVR | Stable | Stable | X | X | Stable |
| DVR API | Stable | Stable | X | X | X |
| DVR MP4 | Stable | X | X | X | X |
| EXEC | Stable | Stable | X | X | X |
| Transcode | Stable | X | X | X | Stable |
| HTTP API | Stable | Stable | X | X | Stable |
| HTTP RAW API | Stable | X | X | X | X |
| HTTP hooks | Stable | X | X | X | X |
| GopCache | Stable | X | X | Stable | X |
| Security | Stable | Stable | X | X | Stable |
| Token Traverse | Stable | X | X | Stable | X |
集群对比
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|---|---|---|---|---|---|
| RTMP Edge | Stable | X | X | Stable | X |
| RTMP Backup | Stable | X | X | X | X |
| VHOST | Stable | X | X | Stable | Stable |
| Reload | Stable | X | X | X | X |
| Forward | Stable | X | X | X | X |
| ATC | Stable | X | X | X | X |
| Docker | Stable | X | X | X | X |
Stream Caster
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|---|---|---|---|---|---|
| Ingest | Stable | X | X | X | X |
| Push MPEGTS | Experiment | X | X | X | Stable |
| Push RTSP | Experiment | X | Stable | X | Stable |
| Push HTTP FLV | Experiment | X | X | X | X |
系统调试
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|---|---|---|---|---|---|
| BW check | Stable | X | X | X | X |
| Tracable Log | Stable | X | X | X | X |
其他
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|---|---|---|---|---|---|
| ARM/MIPS | Stable | Stable | X | X | X |
| Client Library | Stable | X | X | X | X |
文档
| Feature | SRS | NGINX | CRTMPD | AMS | WOWZA |
|---|---|---|---|---|---|
| Demos | Stable | X | X | X | X |
| WIKI(EN+CN) | Stable | EN only | X | X | Stable |
SRS优势的基础在于基础架构,采用ST轻量线程。主要优势体现在以下几点:
-
简化
-
更高性能
-
配置简单
-
支持Reload
不影响在线用户,想怎么改都行
-
快速重启
SRS重启以毫秒计算
-
可追溯日志
记录完整日志,都有错误码,而且有client id,可以查询到某个客户端的整个信息
-
支持热备
SRS边缘可以回多个源站,一个挂了切另外一个
-
url格式简单
把rtmp换成http,后面加上.m3u8就是HLS,多么简单!
-
支持转码
SRS使用ffmpeg做了支持
-
支持录制
-
开源代码
SRS Reload不中断服务
SRS 配置支持 Reload,即在不中断服务的前提下替换应用配置文件并生效
配置方式
修改配置文件,相关配置项如下:
#do not support reload.
daemon off;
# Whether auto reload by watching the config file by inotify.
inotify_auto_reload on;
如果服务器支持使用inotify_auto_reload,则配置文件替换更新后直接生效,无需调用命令行进行手动reload 此时如果srs使用srs.conf配置文件,则替换该文件即可
应用场景
-
配置快速生效
不用重启服务,修改配置后,只需要执行
killall -1 srs或/etc/init.d/srs reload即可生效 -
不中断服务
不支持的情况
-
deamon
是否后台启动,开启后导致reload失效
-
mode
修改vhost的模式,即vhost是源站还是边缘