如何用Docker快速搭建Nginx-RTMP流媒体服务器:小白也能看懂的完整教程 🚀
nginx-rtmp-docker是一个基于Docker的Nginx RTMP流媒体服务器解决方案,集成了nginx-rtmp-module模块,让你无需复杂配置即可快速部署专业的视频直播服务。无论是个人直播、游戏实况还是企业视频会议,这个开源项目都能帮你轻松实现低延迟、高并发的流媒体传输。
📌 为什么选择Nginx-RTMP Docker方案?
✅ 核心优势一目了然
- 超简单部署:一行命令启动完整流媒体服务,无需手动编译Nginx和RTMP模块
- 跨平台兼容:支持Linux、Windows、MacOS,甚至树莓派等ARM设备
- 轻量化设计:基于Debian Slim构建,镜像体积小,资源占用低
- 灵活扩展:支持自定义配置文件,轻松实现HLS/DASH转码、直播录制等高级功能
📊 适用场景全覆盖
- 游戏直播和电竞比赛
- 在线教育和远程培训
- 企业内部视频会议
- 安防监控实时流传输
- 婚礼、活动现场直播
🔧 零基础搭建步骤(3分钟上手)
1️⃣ 准备工作:安装Docker环境
确保你的系统已安装Docker。如果尚未安装,可以参考官方文档进行设置。安装完成后,打开终端验证Docker是否正常运行:
docker --version
2️⃣ 一键启动RTMP服务器
执行以下命令,Docker会自动拉取镜像并启动容器:
docker run -d -p 1935:1935 --name nginx-rtmp tiangolo/nginx-rtmp
参数说明:
-d:后台运行容器-p 1935:1935:映射RTMP默认端口--name nginx-rtmp:为容器指定名称,方便后续管理
3️⃣ 验证服务是否正常运行
检查容器状态:
docker ps | grep nginx-rtmp
如果看到类似以下输出,说明服务器已成功启动:
abc123456789 tiangolo/nginx-rtmp "/usr/local/nginx/sb…" 5 seconds ago Up 4 seconds 0.0.0.0:1935->1935/tcp nginx-rtmp
🎥 推流与播放实战教程
使用OBS Studio推流(适合直播场景)
- 打开OBS Studio,点击"设置"→"推流"
- 流类型选择"自定义..."
- 服务器地址填写:
rtmp://你的服务器IP/live - 流密钥设置一个自定义名称(例如:
mystream123) - 点击"确定"后,点击"开始推流"按钮
使用VLC播放直播流
- 打开VLC播放器
- 点击"媒体"→"打开网络串流"
- 输入URL:
rtmp://你的服务器IP/live/mystream123(注意替换为你的流密钥) - 点击"播放",稍等几秒即可看到直播画面
⚙️ 高级配置指南
查看和修改Nginx配置文件
默认配置文件位于容器内的/etc/nginx/nginx.conf,内容如下:
worker_processes auto;
rtmp_auto_push on;
events {}
rtmp {
server {
listen 1935;
listen [::]:1935 ipv6only=on;
application live {
live on;
record off;
}
}
}
如果需要自定义配置,可以:
- 在本地创建自定义
nginx.conf文件 - 使用以下Dockerfile构建新镜像:
FROM tiangolo/nginx-rtmp
COPY nginx.conf /etc/nginx/nginx.conf
- 构建并运行新镜像:
docker build -t my-nginx-rtmp .
docker run -d -p 1935:1935 --name my-rtmp-server my-nginx-rtmp
启用HLS支持(实现网页播放)
修改配置文件,添加HLS支持:
rtmp {
server {
listen 1935;
chunk_size 4096;
application live {
live on;
record off;
hls on; # 启用HLS
hls_path /tmp/hls; # HLS文件存储路径
hls_fragment 5s; # 切片大小
hls_playlist_length 15s; # 播放列表长度
}
}
}
http {
server {
listen 8080;
location /hls {
root /tmp;
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
add_header Cache-Control no-cache;
}
}
}
重新启动容器时需映射8080端口:
docker run -d -p 1935:1935 -p 8080:8080 --name nginx-rtmp tiangolo/nginx-rtmp
现在你可以通过HTTP方式在浏览器中播放:http://服务器IP:8080/hls/流密钥.m3u8
🐞 常见问题与解决方案
🔍 如何查看服务器日志?
docker logs nginx-rtmp
⚡ 直播卡顿怎么办?
- 检查网络带宽是否充足
- 降低推流码率(建议720p/30fps使用2500-3500kbps)
- 调整HLS切片大小(建议5-10秒)
🔒 如何限制访问权限?
可以在Nginx配置中添加基于IP的访问控制:
application live {
live on;
allow 192.168.1.0/24; # 允许指定IP段
deny all; # 拒绝其他所有IP
}
📚 进阶学习资源
官方文档与工具
- 核心配置文件:nginx.conf
- Docker构建文件:Dockerfile
- nginx-rtmp-module完整指令:参考项目GitHub Wiki
推荐扩展功能
- 集成FFmpeg实现自动转码
- 添加直播录制和回放功能
- 实现多分辨率自适应流
- 配置HTTPS加密传输
📝 总结
通过nginx-rtmp-docker项目,我们只需几分钟就能搭建起专业级的流媒体服务器。这个方案不仅适合个人用户快速上手,也能满足小型企业的直播需求。无论是游戏直播、在线教育还是活动现场转播,Nginx-RTMP都能提供稳定、高效的流媒体服务。
如果你觉得这个项目有用,欢迎到GitCode仓库给作者点个Star ⭐,也可以参与贡献代码或提交改进建议。
📄 开源许可信息
本项目采用MIT许可证开源,详细条款见项目根目录下的LICENSE文件。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



