SRS(simple-rtmp-server) 三Linux环境下安装SRS流媒体服务器实现视频直播推流
Linux环境下安装SRS流媒体服务器实现视频直播推流
Linux环境下安装SRS流媒体服务器实现视频直播推流
SRS(Simple Realtime Server)是一款高性能的开源流媒体服务器,支持RTMP、WebRTC、HLS、HTTP-FLV等多种协议。以下是在Linux环境中部署SRS实现视频直播推流的详细指南。
一、安装前的准备
系统要求
- 操作系统:Ubuntu 20.04/22.04或CentOS 7/8
- 硬件要求:
- CPU:至少2核
- 内存:≥1GB
- 硬盘:≥10GB可用空间
- 网络要求:
- 开放端口:1935 (RTMP), 1985 (API), 8080 (HTTP)
- 带宽:≥10Mbps
安装必要依赖
# Ubuntu/Debian sudo apt update sudo apt install -y git build-essential automake libtool pkg-config # CentOS/RHEL sudo yum groupinstall "Development Tools" sudo yum install -y git autoconf automake libtool
二、安装SRS流媒体服务器
方法1:源码编译安装
# 1. 克隆源码 git clone https://github.com/ossrs/srs.git cd srs/trunk # 2. 配置编译选项(典型配置) ./configure --prefix=/usr/local/srs \ --with-http-api \ --with-http-server \ --with-ffmpeg \ --with-transcode \ --with-ingest \ --with-ssl # 3. 编译并安装 make -j$(nproc) sudo make install # 4. 创建系统服务 sudo cp /usr/local/srs/etc/init.d/srs /etc/init.d/ sudo chmod +x /etc/init.d/srs sudo systemctl daemon-reload
方法2:使用预编译包
# Ubuntu/Debian curl -s https://ossrs.net/ubuntu | bash sudo apt install -y srs # CentOS/RHEL curl -s https://ossrs.net/centos | bash sudo yum install -y srs
方法3:docker运行
docker run --restart always -d -it --name oryx -v $HOME/data:/data \ -p 80:2022 -p 443:2443 -p 1935:1935 -p 8000:8000/udp -p 10080:10080/udp \ registry.cn-hangzhou.aliyuncs.com/ossrs/oryx:5 #此命令安装的是oryx,搭配宝塔面板的docker容器管理界面,会更方便 #其他方式安装 https://ossrs.net/lts/zh-cn/docs/v6/doc/getting-started-oryx
三、配置SRS服务器
基础配置文件示例
sudo vim /usr/local/srs/conf/srs.conf
listen 1935; max_connections 1000; daemon on; srs_log_tank file; srs_log_file /var/log/srs.log; http_server { enabled on; listen 8080; dir ./objs/nginx/html; } http_api { enabled on; listen 1985; } vhost __defaultVhost__ { hls { enabled on; hls_path ./objs/nginx/html; hls_fragment 10; hls_window 60; } http_remux { enabled on; mount [vhost]/[app]/[stream].flv; } }
启动SRS服务
# 源码安装 sudo /usr/local/srs/objs/srs -c /usr/local/srs/conf/srs.conf # 包管理器安装 sudo systemctl start srs
验证安装
# 检查进程 ps aux | grep srs # 检查端口 sudo netstat -tuln | grep -E '1935|8080|1985' # 通过API验证 curl http://localhost:1985/api/v1/versions
四、推流与播放实战
1. 使用FFmpeg推流
# 测试视频推流 ffmpeg -re -i test.mp4 -c:v copy -c:a copy -f flv rtmp://localhost/live/test # 摄像头实时推流(Linux) ffmpeg -f v4l2 -i /dev/video0 -c:v libx264 -preset ultrafast -f flv rtmp://localhost/live/camera # 电脑屏幕捕获 ffmpeg -f x11grab -s 1920x1080 -i :0.0 -c:v libx264 -f flv rtmp://localhost/live/screen
2. 使用OBS Studio推流
- 下载安装OBS Studio
- 设置 → 推流:
- 服务:自定义
- 服务器:
rtmp://your_server_ip/live - 串流密钥:自定义名称(如
obs_stream)
- 添加视频源(显示器捕获/视频采集设备)
- 点击"开始直播"
3. 播放地址
| 协议 | 播放地址示例 | 适用场景 |
| RTMP | rtmp://server_ip/live/test | 低延迟播放器 |
| HTTP-FLV | http://server_ip:8080/live/test.flv | 浏览器(flv.js) |
| HLS | http://server_ip:8080/live/test.m3u8 | 跨平台兼容播放 |
| WebRTC | webrtc://server_ip/live/test | 低延迟实时互动 |
4. 播放测试方法
# VLC播放器 vlc rtmp://localhost/live/test # FFplay播放 ffplay -fflags nobuffer rtmp://localhost/live/test # 低延迟模式 ffplay http://localhost:8080/live/test.flv # HTTP-FLV # 网页播放 http://server_ip:8080/players/srs_player.html
五、高级功能配置
1. 开启HTTPS安全传输
http_server { enabled on; listen 8080; ssl on; ssl_listen 443; ssl_certificate srs.crt; ssl_certificate_key srs.key; }
2. 录制直播流
vhost __defaultVhost__ { dvr { enabled on; dvr_path /data/rec/[app]/[stream].[timestamp].mp4; dvr_plan session; } }
3. 转码配置
vhost __defaultVhost__ { transcode { enabled on; ffmpeg ./objs/ffmpeg/bin/ffmpeg; engine example { enabled on; vfilter { } vcodec libx264; vbitrate 500; vfps 25; vwidth 768; vheight 432; vthreads 4; vprofile baseline; vpreset superfast; acodec libfdk_aac; abitrate 70; asample_rate 44100; achannels 2; aparams { } output rtmp://127.0.0.1:[port]/[app]?vhost=[vhost]/[stream]_[engine]; } } }
4. 安全鉴权
vhost security_vhost { security { enabled on; allow publish 127.0.0.1; # 允许本地推流 deny publish all; # 禁止其他IP推流 allow play all; # 允许所有播放 } }
六、监控与管理
SRS控制台访问
http://server_ip:8080 #设置反向代理后,可使用域名
API接口使用示例
# 获取服务器状态 curl http://localhost:1985/api/v1/summaries # 查看当前流信息 curl http://localhost:1985/api/v1/streams # 踢掉指定客户端 curl "http://localhost:1985/api/v1/clients/123456?action=kick"
性能监控关键指标
# 实时资源使用情况 top -p $(pgrep -f srs) # 网络流量监控 iftop -i eth0 -P # 磁盘IO监控 iostat -x 1
七、故障排除与优化
常见问题解决
| 问题 | 解决方案 |
| 推流连接失败 | 检查防火墙设置:sudo ufw allow 1935,8080,1985 |
| VLC播放卡顿 | 减小播放缓冲:工具→首选项→输入/编解码器→网络缓存时间设为300ms |
| 高延迟(>3秒) | 启用低延迟模式:OBS设置→输出→低延迟模式;VLC使用低延迟配置 |
| HLS播放不更新 | 检查hls_fragment设置,推荐5-10秒;清理浏览器缓存 |
| CPU使用率过高 | 降低分辨率;使用硬件加速编码;减少转码任务 |
性能优化建议
# 1. 增加工作进程 worker_processes 4; # 2. 提高网络缓冲区 sndbuf 10485760; rcvbuf 10485760; # 3. 启用TCP_NODELAY tcp_nodelay on; # 4. 优化HLS配置 hls { hls_fragment 5; # 分片时长(秒) hls_window 60; # 总共保留时长 hls_cleanup on; # 自动清理旧文件 } # 5. 限制并发连接数 max_connections 1000;
八、生产环境建议
部署架构示例

最佳实践
-
安全防护:
- 配置防火墙白名单
- 启用推流鉴权
- 定期更新SRS版本
-
高可用部署:(先做nginx反向代理,分发给多后端处理,再给两个或多个nginx节点做keepalived心跳检测)
# Keepalived配置示例 vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 virtual_ipaddress { 192.168.1.100 } }
- 监控告警
- 使用Prometheus + Grafana监控SRS
- 设置关键指标阈值告警(CPU、内存、流量)
- 日志管理:
# 日志分割配置 /var/log/srs.log { daily rotate 30 compress missingok notifempty }
九、扩展功能
1. WebRTC支持
rtc_server { enabled on; listen 8000; candidate $CANDIDATE; # 替换为服务器公网IP } vhost __defaultVhost__ { rtc { enabled on; rtmp_to_rtc on; rtc_to_rtmp on; } }
2. SRT协议支持
./configure --with-srt
3. 集群部署
# 源站配置 origin_cluster on; vhost origin { cluster { mode remote; origin 192.168.1.100:1935; # 边缘节点 } }
十、完整测试脚本
#!/bin/bash # 启动SRS服务器 /usr/local/srs/objs/srs -c /usr/local/srs/conf/srs.conf & # 等待服务器启动 sleep 2 # 推流测试 ffmpeg -re -f lavfi -i testsrc=size=1280x720:rate=30 -c:v libx264 -f flv rtmp://localhost/live/test & # 播放测试 ffplay -fflags nobuffer rtmp://localhost/live/test & # 监控 while true; do clear curl -s http://localhost:1985/api/v1/summaries | jq sleep 1 done
总结
通过以上步骤,您已经成功在Linux环境下部署了SRS流媒体服务器,并实现了多种方式的推流和播放。SRS作为一款高性能的开源流媒体服务器,具有以下优势:
- 协议支持全面:RTMP、HTTP-FLV、HLS、WebRTC等
- 性能卓越:可支持上千并发,毫秒级延迟
- 扩展性强:支持集群部署、转码、录制等高级功能
- 易于管理:提供Web控制台和RESTful API
生产环境建议:
- 使用Docker容器化部署
- 配合Nginx实现负载均衡
- 启用监控告警系统
- 定期备份重要配置
对于业务关键型应用,可考虑SRS的商业支持服务,获取专业技术支持和高级功能。
版权声明:本文为CSDN博主「csdn_tom_168」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/csdn_tom_168/article/details/149092143
转: https://blog.csdn.net/csdn_tom_168/article/details/149092143

浙公网安备 33010602011771号