一、版本选择与基础部署
当前推荐使用SRS 5.x稳定版本,该版本经过长期验证具备完善的RTMP/HLS协议支持。Windows平台部署流程如下:
- 下载安装:从官方托管仓库获取Windows二进制包,解压后得到包含可执行文件和配置目录的完整结构
- 配置文件定位:默认加载
conf/console.conf,但官方文档及实际生产环境推荐使用srs.conf作为主配置文件 - 启动命令:在根目录执行
objs\srs.exe -c conf\srs.conf,通过参数指定配置文件路径
Linux平台提供两种部署方案:
- Docker容器化部署:官方镜像已预装依赖库,通过端口映射实现服务隔离
- 源码编译部署:需安装GCC、CMake等工具链,编译过程可能因环境差异导致失败,建议仅在定制化开发时使用
二、Docker部署实战解析
容器化部署需重点解决配置文件映射问题,典型启动命令如下:
docker run -d \-p 1935:1935 -p 1985:1985 -p 8080:8080 \-v /host/path/srs.conf:/usr/local/srs/conf/srs.conf \ossrs/srs:latest
参数说明:
- 端口映射:
-p 宿主机端口:容器端口实现网络穿透,1935(RTMP)、1985(API)、8080(HTTP)为标准端口组合 - 配置挂载:
-v参数将宿主机配置文件覆盖容器内默认配置,需确保文件权限为644 - 镜像选择:推荐使用官方维护的
ossrs/srs镜像,定期更新安全补丁
三、核心配置模块详解
1. 基础服务配置
listen 1935; # RTMP推流端口http_api {enabled on;listen 1985; # API服务端口}http_server {enabled on;listen 8080; # 监控页面端口dir ./objs/nginx/html; # 静态资源目录}
- listen:RTMP协议入口,支持多端口监听
- http_api:提供流状态查询、踢除连接等管理接口
- http_server:内置Web控制台,可实时查看连接数、带宽等指标
2. 安全认证机制
通过HTTP Basic Auth保护API接口,配置示例:
http_api {enabled on;listen 1985;auth {enabled on;user admin;password 123456;}}
访问时浏览器将弹出认证对话框,需输入配置的用户名密码。生产环境建议:
- 使用强密码策略(长度≥12位,包含大小写字母和特殊字符)
- 定期轮换认证凭证
- 通过Nginx反向代理统一管理认证
3. 回调系统配置
回调机制是实现业务逻辑的关键,主要包含两个事件:
dvr {enabled on;dvr_path ./objs/nginx/html/[app]/[stream].[timestamp].flv;dvr_plan segment;dvr_duration 30;}# 回调配置示例http_hooks {enabled on;on_connect http://127.0.0.1:8080/api/on_connect;on_publish http://127.0.0.1:8080/api/on_publish;on_play http://127.0.0.1:8080/api/on_play;}
回调响应规范:
- 成功响应:HTTP 200 + 返回体
0或{"code":0} - 失败响应:非200状态码或返回体包含错误码
- on_publish失败将拒绝推流,on_play失败将终止播放
四、生产环境优化建议
- 集群部署:通过SRS的边缘节点(Edge)和源站(Origin)架构实现负载均衡
- 监控告警:集成Prometheus+Grafana监控套件,设置连接数、带宽阈值告警
- 日志管理:配置
srs.log滚动输出,使用ELK栈实现日志集中分析 - 协议扩展:根据业务需求启用HLS、HTTP-FLV等协议支持
- 安全加固:
- 限制API访问IP白名单
- 定期更新SRS版本
- 关闭不必要的端口和服务
五、常见问题排查指南
-
推流失败:
- 检查1935端口是否开放
- 验证
on_publish回调是否返回正确响应 - 查看SRS日志中的错误码(如403表示认证失败)
-
播放卡顿:
- 使用
ffprobe检测流信息是否完整 - 检查服务器带宽是否充足
- 调整GOP间隔(建议2-4秒)
- 使用
-
Docker容器异常退出:
- 查看容器日志
docker logs <container_id> - 检查配置文件语法是否正确
- 验证宿主机资源是否充足(CPU/内存)
- 查看容器日志
通过系统化的配置管理和持续优化,SRS流媒体服务器可稳定支撑万人级并发场景,满足在线教育、直播互动、监控回传等多样化业务需求。建议开发者定期参与社区技术交流,及时获取最新版本特性与安全补丁。