Niginx搭建rtmp流媒体服务器(ubuntu24)
在 Ubuntu 24 上使用 Nginx 搭建 RTMP 流媒体服务器是一个很棒的选择,它可以让你实现视频直播和点播功能。下面我将为你详细介绍一步步的操作方法。
下面是搭建过程的整体流程图,帮助你直观地理解每个步骤:
flowchart TD
A[环境准备与依赖安装] --> B[安装Nginx与RTMP模块]
B --> C{选择安装方式}
C -- 包管理器安装<br>(快速) --> D[配置RTMP服务]
C -- 源码编译安装<br>(灵活) --> D
D --> E[防火墙与权限设置]
E --> F[推流测试]
F --> G[播放测试]
G --> H[高级功能配置<br>(HLS/安全/多路推流)]
🔧 安装 Nginx 与 RTMP 模块
首先,你需要安装 Nginx 和 RTMP 模块。有以下两种主要方式:
1. 使用包管理器安装(推荐,更简单快捷)
在终端中执行以下命令:
sudo apt update
sudo apt install nginx libnginx-mod-rtmp -y
此方法会自动处理依赖关系,但模块版本可能不是最新的。
2. 源码编译安装(适合需要特定版本或自定义功能)
如果需要最新版本或特定配置,可以从源码编译安装。
# 安装依赖
sudo apt install build-essential libpcre3 libpcre3-dev libssl-dev zlib1g-dev -y
# 下载Nginx和RTMP模块源码
wget http://nginx.org/download/nginx-1.25.3.tar.gz
tar -zxvf nginx-1.25.3.tar.gz
git clone https://github.com/arut/nginx-rtmp-module.git
# 编译安装(注意路径替换)
cd nginx-1.25.3
./configure --add-module=../nginx-rtmp-module --with-http_ssl_module
make && sudo make install
编译安装能提供更大的灵活性,但过程相对复杂。
⚙️ 配置 RTMP 服务
安装完成后,需要配置 Nginx 以启用 RTMP 功能。
1. 编辑配置文件
Nginx 的主配置文件通常是 /etc/nginx/nginx.conf。使用文本编辑器打开它,在文件末尾添加以下 RTMP 配置块:
sudo nano /etc/nginx/nginx.conf
在文件末尾添加以下内容:
rtmp {
server {
listen 1935; # RTMP 默认监听端口
chunk_size 4096; # 数据块大小
ping 30s; # 保活心跳时间
notify_method get; # 通知方法
# 直播应用
application live {
live on; # 启用直播
record off; # 关闭录制功能
# 如果需要录制,可设置为 record all 并指定路径 record_path /var/rec;
# 可选的访问控制(增强安全性)
# allow publish 192.168.1.0/24; # 只允许指定网段推流
# deny publish all; # 拒绝其他所有IP推流
}
# HLS 应用(用于支持HTTP自适应流)
application hls {
live on;
hls on; # 开启HLS
hls_path /tmp/hls; # HLS切片文件存储路径
hls_fragment 5s; # 每个TS切片时长
hls_playlist_length 30s; # HLS播放列表长度
}
}
}
2. 配置HTTP服务器用于HLS和状态监控(可选但推荐)
在配置文件的 http 块内添加以下内容,以便通过HTTP访问HLS流和服务器状态:
http {
... (其他原有配置)
server {
listen 80;
server_name localhost;
# HLS 流访问端点
location /hls {
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
}
root /tmp; # 与rtmp配置中的hls_path对应
add_header Cache-Control no-cache; # 禁用缓存用于实时播放
add_header Access-Control-Allow-Origin *; # 解决跨域问题
}
# RTMP 状态监控页面
location /stat {
rtmp_stat all;
rtmp_stat_stylesheet stat.xsl;
}
# 状态页面的样式文件
location /stat.xsl {
root /usr/local/nginx/nginx-rtmp-module; # 或模块所在路径
}
}
}
3. 测试配置并重启Nginx
保存配置文件后,执行以下命令:
# 测试配置文件语法是否正确
sudo nginx -t
# 如果测试成功,重新加载Nginx配置或重启Nginx服务
sudo systemctl reload nginx
# 或者 sudo systemctl restart nginx
# 如果使用源码编译安装,启动命令可能是
sudo /usr/local/nginx/sbin/nginx
🔒 防火墙与权限设置
确保系统的防火墙允许 RTMP 端口(默认为1935)通信:
sudo ufw allow 1935/tcp # 允许RTMP流量
sudo ufw allow 80/tcp # 如果使用HLS,允许HTTP流量
📡 推流与播放测试
服务器配置好后,可以进行推流和播放测试。
1. 推流测试
使用 OBS Studio 推流是最简单的方法:
- 在OBS的"设置" -> "推流"中,选择"自定义"服务
- 服务器地址填写:
rtmp://你的服务器IP/live - 流密钥可以自定义,例如:
test_stream - 然后点击"开始推流"
也可以使用 FFmpeg 进行推流测试:
ffmpeg -re -i 你的视频文件.mp4 -c:v libx264 -c:a aac -f flv "rtmp://localhost/live/test_stream"
2. 播放测试
- RTMP 流播放:使用 VLC 播放器,打开"媒体" -> “打开网络串流”,输入地址:
rtmp://你的服务器IP/live/test_stream - HLS 流播放(如果配置了HLS):在支持HLS的播放器(如VLC或浏览器中的播放器)中输入:
http://你的服务器IP/hls/test_stream.m3u8
3. 查看服务器状态
如果配置了状态页面,可以通过浏览器访问 http://你的服务器IP/stat 查看当前流和连接状态。
🚀 高级功能与优化配置
1. 启用HLS支持
HLS(HTTP Live Streaming)能让你的直播流更容易通过HTTP分发,并更好地适应不同网络条件。配置参考前面的HLS应用部分。
2. 多路推流与转码
你可以配置Nginx将接收到的流自动推送到其他平台(如YouTube或Twitch):
application live {
live on;
record off;
# 推送到其他RTMP服务器
push rtmp://其他服务器地址/路径/流密钥;
}
3. 安全加固
- 推流认证:可以通过HTTP回调实现推流认证
- IP限制:如前面配置所示,限制推流IP范围
- HTTPS加密:为状态页面和HLS流配置SSL/TLS加密
⚠️ 常见问题排查
如果遇到问题,可以检查以下几点:
- 查看Nginx错误日志:
sudo tail -f /var/log/nginx/error.log - 确认端口1935是否监听:
sudo netstat -tlnp | grep 1935 - 检查防火墙设置是否阻止了相关端口
- 验证推流地址和流密钥是否正确
更多推荐


所有评论(0)