SRS流媒体服务器部署与配置全攻略

一、版本选择与基础部署

当前推荐使用SRS 5.x稳定版本,该版本经过长期验证具备完善的RTMP/HLS协议支持。Windows平台部署流程如下:

  1. 下载安装:从官方托管仓库获取Windows二进制包,解压后得到包含可执行文件和配置目录的完整结构
  2. 配置文件定位:默认加载conf/console.conf,但官方文档及实际生产环境推荐使用srs.conf作为主配置文件
  3. 启动命令:在根目录执行objs\srs.exe -c conf\srs.conf,通过参数指定配置文件路径

Linux平台提供两种部署方案:

  • Docker容器化部署:官方镜像已预装依赖库,通过端口映射实现服务隔离
  • 源码编译部署:需安装GCC、CMake等工具链,编译过程可能因环境差异导致失败,建议仅在定制化开发时使用

二、Docker部署实战解析

容器化部署需重点解决配置文件映射问题,典型启动命令如下:

  1. docker run -d \
  2. -p 1935:1935 -p 1985:1985 -p 8080:8080 \
  3. -v /host/path/srs.conf:/usr/local/srs/conf/srs.conf \
  4. ossrs/srs:latest

参数说明:

  • 端口映射-p 宿主机端口:容器端口实现网络穿透,1935(RTMP)、1985(API)、8080(HTTP)为标准端口组合
  • 配置挂载-v参数将宿主机配置文件覆盖容器内默认配置,需确保文件权限为644
  • 镜像选择:推荐使用官方维护的ossrs/srs镜像,定期更新安全补丁

三、核心配置模块详解

1. 基础服务配置

  1. listen 1935; # RTMP推流端口
  2. http_api {
  3. enabled on;
  4. listen 1985; # API服务端口
  5. }
  6. http_server {
  7. enabled on;
  8. listen 8080; # 监控页面端口
  9. dir ./objs/nginx/html; # 静态资源目录
  10. }
  • listen:RTMP协议入口,支持多端口监听
  • http_api:提供流状态查询、踢除连接等管理接口
  • http_server:内置Web控制台,可实时查看连接数、带宽等指标

2. 安全认证机制

通过HTTP Basic Auth保护API接口,配置示例:

  1. http_api {
  2. enabled on;
  3. listen 1985;
  4. auth {
  5. enabled on;
  6. user admin;
  7. password 123456;
  8. }
  9. }

访问时浏览器将弹出认证对话框,需输入配置的用户名密码。生产环境建议:

  • 使用强密码策略(长度≥12位,包含大小写字母和特殊字符)
  • 定期轮换认证凭证
  • 通过Nginx反向代理统一管理认证

3. 回调系统配置

回调机制是实现业务逻辑的关键,主要包含两个事件:

  1. dvr {
  2. enabled on;
  3. dvr_path ./objs/nginx/html/[app]/[stream].[timestamp].flv;
  4. dvr_plan segment;
  5. dvr_duration 30;
  6. }
  7. # 回调配置示例
  8. http_hooks {
  9. enabled on;
  10. on_connect http://127.0.0.1:8080/api/on_connect;
  11. on_publish http://127.0.0.1:8080/api/on_publish;
  12. on_play http://127.0.0.1:8080/api/on_play;
  13. }

回调响应规范

  • 成功响应:HTTP 200 + 返回体0{"code":0}
  • 失败响应:非200状态码或返回体包含错误码
  • on_publish失败将拒绝推流,on_play失败将终止播放

四、生产环境优化建议

  1. 集群部署:通过SRS的边缘节点(Edge)和源站(Origin)架构实现负载均衡
  2. 监控告警:集成Prometheus+Grafana监控套件,设置连接数、带宽阈值告警
  3. 日志管理:配置srs.log滚动输出,使用ELK栈实现日志集中分析
  4. 协议扩展:根据业务需求启用HLS、HTTP-FLV等协议支持
  5. 安全加固
    • 限制API访问IP白名单
    • 定期更新SRS版本
    • 关闭不必要的端口和服务

五、常见问题排查指南

  1. 推流失败

    • 检查1935端口是否开放
    • 验证on_publish回调是否返回正确响应
    • 查看SRS日志中的错误码(如403表示认证失败)
  2. 播放卡顿

    • 使用ffprobe检测流信息是否完整
    • 检查服务器带宽是否充足
    • 调整GOP间隔(建议2-4秒)
  3. Docker容器异常退出

    • 查看容器日志docker logs <container_id>
    • 检查配置文件语法是否正确
    • 验证宿主机资源是否充足(CPU/内存)

通过系统化的配置管理和持续优化,SRS流媒体服务器可稳定支撑万人级并发场景,满足在线教育、直播互动、监控回传等多样化业务需求。建议开发者定期参与社区技术交流,及时获取最新版本特性与安全补丁。