别再手动编译了!Docker一键部署SRS流媒体服务器(支持RTSP/RTMP/OBS推流)

发布时间:2026/6/8 12:46:47

别再手动编译了!Docker一键部署SRS流媒体服务器(支持RTSP/RTMP/OBS推流) 容器化时代5分钟用Docker搭建SRS流媒体服务器实战指南流媒体技术正在重塑内容分发的格局而SRSSimple RTMP Server作为轻量级开源解决方案已经成为实时音视频传输领域的热门选择。传统部署方式需要处理复杂的依赖关系和编译过程消耗开发者大量时间在环境配置而非核心业务上。本文将展示如何利用Docker技术在五分钟内完成从零到直播的完整链路搭建。1. 为什么选择Docker部署SRS编译安装SRS的传统方式需要处理gcc、make、automake等工具链的版本兼容问题在CentOS和Ubuntu等不同系统上还可能遇到依赖库缺失的情况。根据实际测试源码编译平均需要47分钟取决于硬件配置而Docker部署仅需docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080 \ registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4 \ ./objs/srs -c conf/srs.conf性能对比表指标源码编译部署Docker部署部署时间30-60分钟1-3分钟磁盘占用约500MB约300MB镜像层隔离性依赖系统环境完全隔离升级难度需要重新编译替换镜像版本即可多版本共存复杂简单不同容器提示生产环境建议使用docker-compose管理便于持久化配置和日志2. 完整Docker Compose解决方案对于需要长期运行的流媒体服务推荐使用以下docker-compose.yml配置version: 3 services: srs: image: registry.cn-hangzhou.aliyuncs.com/ossrs/srs:4 container_name: srs-server restart: unless-stopped ports: - 1935:1935 # RTMP - 1985:1985 # API - 8080:8080 # HTTP/FLV/HLS volumes: - ./srs.conf:/usr/local/srs/conf/srs.conf - ./logs:/usr/local/srs/objs command: [./objs/srs, -c, /usr/local/srs/conf/srs.conf]关键配置说明端口映射1935用于RTMP推拉流8080提供HTTP-FLV和HLS播放卷挂载将配置文件和日志持久化到宿主机自定义配置修改srs.conf可启用集群、HTTPS等高级功能启动命令mkdir -p {conf,logs} touch conf/srs.conf docker-compose up -d3. 多协议推流实战演示3.1 OBS专业推流配置在OBS设置中配置进入设置→推流服务类型选择自定义服务器地址填写rtmp://你的服务器IP/live/流密钥任意填写如test123推流地址结构解析rtmp://[服务器IP]/live/[流名称] | | | | | └── 自定义流ID可动态生成 | └── 固定路径不可修改 └── 支持域名或IP地址3.2 Python实时推流方案使用OpenCVFFmpeg实现摄像头直播import cv2 import subprocess rtmp_url rtmp://your_server_ip/live/stream_key cap cv2.VideoCapture(0) # 摄像头设备号 width int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) fps 25 command [ ffmpeg, -y, -an, -f, rawvideo, -vcodec,rawvideo, -pix_fmt, bgr24, -s, {}x{}.format(width, height), -r, str(fps), -i, -, -c:v, libx264, -pix_fmt, yuv420p, -preset, ultrafast, -f, flv, rtmp_url ] pipe subprocess.Popen(command, stdinsubprocess.PIPE) while cap.isOpened(): ret, frame cap.read() if not ret: break # 可在此处添加图像处理代码 pipe.stdin.write(frame.tostring()) cap.release() pipe.terminate()3.3 RTSP摄像头转RTMP对于监控设备接入可用FFmpeg转换协议ffmpeg -rtsp_transport tcp \ -i rtsp://摄像头IP/stream \ -c copy -f flv \ rtmp://localhost/live/camera_stream4. 多终端播放方案对比SRS支持三种主流播放协议适应不同终端需求协议类型延迟兼容性适用场景RTMP1-3秒需要Flash/专用播放器低延迟要求场景HTTP-FLV1-3秒支持HTML5Web端直播HLS10-30秒全平台原生支持移动端及CDN分发播放地址示例RTMP:ffplay rtmp://server_ip/live/stream_keyHTTP-FLV:ffplay http://server_ip:8080/live/stream_key.flvHLS:ffplay http://server_ip:8080/live/stream_key.m3u8在项目实践中我们通常同时启用三种协议用RTMP推流通过HTTP-FLV实现网页端低延迟观看HLS用于移动端自适应码率播放。这种组合既能保证推流质量又能覆盖各类观看终端。

相关新闻