目前主流的流媒体服务器主要有 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轻量线程(epoll+send)。主要优势体现在以下几点:
-
简化
-
更高性能
-
配置简单
-
支持Reload
不影响在线用户,想怎么改都行
-
快速重启
SRS重启以毫秒计算
-
可追溯日志
记录完整日志,都有错误码,而且有client id,可以查询到某个客户端的整个信息
-
支持热备
SRS边缘可以回多个源站,一个挂了切另外一个
-
url格式简单
把rtmp换成http,后面加上.m3u8就是HLS,多么简单!
-
支持转码
SRS使用ffmpeg做了支持
-
支持录制
-
开源代码
例如HLS热备的简化 — 使用standby方案替代完全热备:
- 编码器输出相同的流给异地机房的两个流媒体服务器,两个服务器之间保持通信。
- 两个服务器一个时刻只有一个输出HLS切片,另外一个standby。
- 当另外一个服务器挂掉时,standby的立刻开始切片。
- 两个服务器的切片都输出到一个存储。
https://github.com/winlinvip/srs/tree/3.0release#performance
SRS主要运行在Linux系统上,譬如Centos和Ubuntu,包括x86、x86-64、ARM和MIPS。其他的OS可以使用 srs-docker开发和运行,比如macOS、Windows等。
SRS可以在一台服务器上运行集群,或者在多台服务器上也可以运行集群。SRS是单进程模型,不支持多进程;您可以使用 go-oryx 支持多进程。
CentOS 8 x64
基于安装包安装
SRS发布版本提供安装包的下载,访问 ossrs.net 下载安装包,如:SRS-CentOS7-x86_64-3.0.153.zip
上传到Linux系统并执行安装:
#SRS-CentOS7-x86_64-3.0.153.zip文件名替换为实际的文件名
unzip SRS-CentOS7-x86_64-3.0.153.zip
cd ./SRS-CentOS7-x86_64-3.0.153/
./INSTALL
若您需要自己编译SRS,请参考编译SRS
#安装的目录
#/usr/local/srs
#默认的可用配置文件
#/usr/local/srs/conf/srs.conf
# 安装后,存在默认的配置文件/usr/local/srs/conf/rtmp.conf
listen 1935;
max_connections 1000;
vhost __defaultVhost__ {
}
#cd到/usr/local/srs目录
./objs/srs -c conf/rtmp.conf
使用 OBS 推流,安装软件后依次点击【设置 - 推流】并填写相关信息,例如
#服务器的地址
rtmp://192.168.123.22/live
#串流密钥
livestream
再设置【场景-来源】添加视音频或图像等采集源,点击【开始推流】,此时OBS的右下角会显示推流成功的状态如下:
填写对应协议的播放地址,例如rtmp://192.168.123.22/live/livestream
,点击【播放视频】效果如下:
有时候启动没有问题,但是就是看不了,原因是防火墙和selinux开着。
可以用下面的方法关掉防火墙:
# disable the firewall
sudo /etc/init.d/iptables stop
sudo /sbin/chkconfig iptables off
selinux也需要disable,运行命令getenforce
,若不是Disabled,执行下面的步骤:
#编辑配置文件
sudo vi /etc/sysconfig/selinux
#把SELINUX的值改为disabled
SELINUX=disabled
#重启系统
sudo init 6