SRS流媒体服务器主要使用RTMP、HTTP-FLV、HLS、WebRTC、SRT、GB28181等协议,推流端以RTMP和SRT为主,播放端根据延迟与兼容性选择HTTP-FLV、HLS或WebRTC。
srs流媒体服务器支持哪些协议?先从推流和播放两端看
SRS作为开源流媒体服务器,协议栈覆盖了直播链路的不同环节,推流、服务端分发、播放三个位置对协议的要求不一样。
- 推流端:RTMP、SRT、WebRTC、GB28181
- 播放端:HTTP-FLV、HLS、WebRTC、RTMP
- 传输/回源:SRT、RTMP、HTTP-FLV、HLS
下表按角色和延迟量级做梳理。
| 协议 | 传输层 | 典型角色 | 延迟量级 | 常见场景 |
|---|---|---|---|---|
| RTMP | TCP | 推流/分发 | 1-3秒 | 传统直播推流 |
| HTTP-FLV | HTTP/TCP | 播放 | 1-3秒 | 网页低延迟直播 |
| HLS | HTTP/TCP | 播放 | 5-30秒 | 手机H5/跨平台播放 |
| WebRTC | UDP/TCP | 播放/推流 | 1-1秒 | 连麦、秒开、实时通话 |
| SRT | UDP | 推流/传输 | 1-3秒 | 弱网、远程制作 |
| GB28181 | TCP/UDP | 接入 | 按需 | 安防摄像头对接 |
一句话理解:RTMP负责把流推进来,HTTP-FLV和HLS负责把流播出去,WebRTC负责把延迟压到最低,SRT负责在不稳定网络上安全传输,GB28181负责把监控摄像头接进来。
协议逐个拆解:为什么SRS不只用RTMP
RTMP:最经典的推流协议
RTMP由Adobe提出,曾是Flash直播时代的核心协议,直到今天,OBS、ffmpeg等推流工具默认仍支持RTMP,SRS对RTMP的支持非常成熟,推流地址通常形如 rtmp://服务器IP:1935/live/livestream,OBS里只需把服务器地址填成 rtmp://服务器IP/live,串流密钥填 livestream,就能把画面推给SRS。
RTMP基于TCP,在普通宽带下可稳定运行,缺点是部分企业网络可能封禁1935端口,需要改端口或走RTMPS。
HTTP-FLV:网页低延迟直播常用

HTTP-FLV把RTMP的流媒体数据封装成FLV格式,通过HTTP长连接传输,浏览器端可以用flv.js播放,延迟与RTMP接近,多数情况下在1到3秒。
SRS默认配置下,播放地址为 http://服务器IP:8080/live/livestream.flv,因为走HTTP默认端口或80端口,穿透防火墙比RTMP更友好,适合PC网页直播、活动直播等场景。
HLS:全平台兼容但延迟偏高
HLS是苹果提出切片协议,把流切成一个个TS小文件,用m3u8索引,手机Safari、微信内置浏览器、iOS端原生支持,无需额外插件。
SRS会自动切片并生成m3u8文件,播放地址通常是 http://服务器IP:8080/live/livestream.m3u8,劣势是延迟较高,常见在5到30秒,适合点播、大型活动、需要高兼容性的播放端。
WebRTC:连麦与秒开的低延迟选择
WebRTC本身是浏览器实时通信技术,SRS将其纳入直播协议栈后,能实现低于1秒的播放延迟,SRS支持WebRTC推流和播放,播放地址形如 webrtc://服务器IP:1985/live/livestream。
WebRTC依赖UDP,但可回退TCP,实际部署时要配置公网IP和ICE候选地址,否则跨网段播放会失败,业内专家指出,WebRTC在互动直播、视频连麦、远程协助等场景已逐渐成为标配。
SRT:弱网远程传输利器
SRT基于UDP,通过ARQ重传和加密解决丢包和抖动问题,适合跨地域推流、4G/5G背包传输、远程制作,SRS支持SRT推流监听,推流地址可以用 srt://服务器IP:10080?streamid=#!::r=live/livestream,m=publish。
相比RTMP,SRT在丢包较大的链路上更稳定,很多远程直播设备原生支持SRT输出。
GB28181:安防摄像头接入协议
GB28181是国内安防监控领域的国家标准,SRS支持GB28181协议接入,可对接海康、大华等IPC摄像头,把监控画面转换成RTMP、HTTP-FLV或WebRTC输出。
摄像头配置SIP服务器指向SRS,SRS收到注册和推流请求后生成直播流,这种能力让SRS在智慧园区、城市安防、工地监控等项目中常见。
srs rtmp推流地址怎么配置:本地环境实操

假设你已有Linux服务器,下面是可落地的步骤。
-
下载源码并编译:
git clone https://github.com/ossrs/srs.git cd srs/trunk ./configure make -
启动默认配置:
./objs/srs -c conf/srs.conf默认会监听RTMP的1935端口和HTTP API的8080端口。
-
用ffmpeg推流:
ffmpeg -re -i test.mp4 -c copy -f flv rtmp://127.0.0.1:1935/live/livestream推流地址中的
live是应用名,livestream是流名,可以按业务修改。 -
验证播放:
- HTTP-FLV:
http://服务器IP:8080/live/livestream.flv - HLS:
http://服务器IP:8080/live/livestream.m3u8 - WebRTC:
webrtc://服务器IP:1985/live/livestream
- HTTP-FLV:
注意:WebRTC播放需要SRS配置文件开启WebRTC并设置正确的candidate IP,否则本机可播、外网不可播。
srs和nginx rtmp对比:协议支持差异在哪
nginx-rtmp是nginx的第三方模块,也能做RTMP直播,区别主要在协议覆盖面和操作方式。
| 对比维度 | SRS | nginx-rtmp |
|---|---|---|
| RTMP推流 | 支持 | 支持 |
| HTTP-FLV | 原生支持 | 需要额外配置 |
| HLS | 原生切片 | 需要配置切片参数 |
| WebRTC | 原生支持 | 不支持或依赖外部服务 |
| SRT | 原生支持 | 不支持 |
| GB28181 | 原生支持 | 不支持 |
| HTTP API | 内置,可查询流状态 | 依赖nginx配置 |
| 配置友好度 | 配置文件+API | 纯nginx配置,语法复杂 |
行业共识认为,如果只做基础RTMP推流和HLS播放,两者都能胜任;但如果需要WebRTC低延迟、SRT弱网传输或GB28181安防接入,SRS的协议覆盖更完整。
不同业务场景下SRS协议怎么搭配
- 秀场直播:OBS推RTMP到SRS,播放端用HTTP-FLV或HLS,想做到秒开,可加WebRTC播流。
- 远程制作/户外直播:摄像机或推流盒子走SRT到SRS,服务端再转RTMP或HTTP-FLV给观众。
- 安防监控:海康/大华摄像头通过GB28181接入SRS,管理端用WebRTC预览,大屏用HTTP-FLV。
- 在线教育/连麦:推流端和播放端都用WebRTC,SRS做SFU分发,延迟控制在1秒内。
- 跨平台H5播放:优先HLS,iOS和微信环境兼容最好。

srs流媒体服务器价格与免费部署方式
SRS是开源软件,代码托管在GitHub,采用MIT许可,企业或个人部署不需要支付授权费,真正成本来自服务器、带宽和运维,局域网srs流媒体服务器搭建时,用一台普通x86机器或ARM盒子就能跑起来,尤其适合园区、工厂、实验室等内网环境。
部署模式上,可按需选取:
- 自建裸机:编译安装,成本最低但运维麻烦。
- Docker部署:
docker run -d -p 1935:1935 -p 8080:8080 -p 1985:1985 registry.cn-hangzhou.aliyuncs.com/ossrs/srs:5,一条命令启动。 - 云服务器:带宽费用是主要开销,按流量计费的云主机适合测试,大流量业务建议按带宽包月。
srs流媒体服务器都是用的什么协议相关问题
SRS可以只用WebRTC做直播吗?
可以,SRS支持WebRTC推流和播放,适合连麦和秒开场景,但WebRTC穿透复杂,纯内网或已配置TURN/ICE的环境更稳定,在公开网络大规模分发时,多数方案会用WebRTC播放配合RTMP/SRT推流。
局域网srs流媒体服务器搭建选哪个协议最稳定?
局域网内网络质量稳定,优先选RTMP推流加HTTP-FLV播放,两者都走TCP,配置简单,延迟约1到3秒,若需要浏览器无插件播放,HTTP-FLV配合flv.js即可,局域网环境不建议优先用HLS,延迟更容易被感知。
SRS流媒体服务器免费吗?
SRS本身免费开源,不收取授权费用,部署、带宽、硬件资源自担,docker镜像和源码均可公开获取,商用项目只要遵守MIT许可即可。
SRS的协议组合不是堆砌,而是围绕直播链路的真实需求设计:推流要稳、播放要快、弱网要抗丢包、安防要兼容国标,理解每个协议的位置,才能把SRS用得顺手。
