CentOS下用Nginx搭建RTMP流媒体服务:从安装到测试全指南
在视频直播、在线教育、监控回传等场景中,RTMP(Real-Time Messaging Protocol)作为经典的流媒体传输协议,凭借低延迟、高可靠性的特点被广泛使用。而Nginx作为轻量级高性能Web服务器,通过第三方模块可轻松实现RTMP流媒体服务的搭建。本文将详细介绍在CentOS 7系统中从零开始部署Nginx+RTMP服务的完整流程,包括环境准备、模块编译、配置优化及测试验证。
一、环境准备与依赖安装
RTMP服务的核心是Nginx及其RTMP模块,需先在CentOS系统中安装基础依赖。
1. 系统更新与基础工具
首先更新CentOS系统并安装编译所需工具:
yum update -y
yum install -y gcc gcc-c++ make automake autoconf libtool
2. 安装核心依赖库
Nginx编译需PCRE(正则表达式库)、zlib(压缩库)、OpenSSL(加密库)支持:
yum install -y pcre-devel zlib-devel openssl-devel
3. 安装FFmpeg(用于推流测试)
FFmpeg是视频处理工具,用于生成测试视频和模拟推流:
yum install -y epel-release
yum install -y ffmpeg ffmpeg-devel
二、编译安装Nginx与RTMP模块
Nginx默认不包含RTMP模块,需通过第三方模块nginx-rtmp-module扩展功能,因此需编译安装Nginx。
1. 下载Nginx与RTMP模块源码
# 下载Nginx源码
wget http://nginx.org/download/nginx-1.21.6.tar.gz
tar -zxvf nginx-1.21.6.tar.gz
# 下载RTMP模块(第三方模块)
git clone https://github.com/arut/nginx-rtmp-module.git
2. 编译Nginx并添加RTMP模块

进入Nginx源码目录,配置编译参数并安装:
cd nginx-1.21.6
./configure \
--prefix=/usr/local/nginx \
--with-http_mp4_module \ # 支持MP4格式
--add-module=../nginx-rtmp-module \ # 启用RTMP模块
--with-http_ssl_module \ # 可选,支持HTTPS
--with-http_v2_module \ # 可选,支持HTTP/2
make && make install
三、配置Nginx RTMP服务
安装完成后,需在Nginx配置文件中添加RTMP相关配置,实现推流、拉流功能。
1. 编辑Nginx配置文件
vim /usr/local/nginx/conf/nginx.conf
2. 添加RTMP核心配置
在http块外添加RTMP配置块,实现推流、HLS/WebRTC拉流支持:
rtmp {
server {
listen 1935; # RTMP推流端口
chunk_size 4096; # 数据块大小
# 定义直播应用
application live {
live on; # 启用直播模式
record off; # 禁用自动录制
# HLS配置(支持Web端播放)
hls on;
hls_path /usr/local/nginx/html/hls; # HLS文件输出路径
hls_fragment 5s; # 切片时长
hls_playlist_length 60s; # 播放列表长度
# WebRTC拉流(可选)
push rtmp://live.example.com/webrtc;
}
}
}
3. 配置HTTP服务(用于Web拉流)
在http块下添加Web访问配置,支持HLS格式的m3u8文件:
server {
listen 80;
server_name yourdomain.com;
location /hls {
alias /usr/local/nginx/html/hls; # HLS文件路径
add_header Cache-Control no-cache;
}
}
四、启动服务与功能测试
完成配置后,启动Nginx并验证推流、拉流功能。
1. 启动Nginx
/usr/local/nginx/sbin/nginx
# 如需修改配置,使用:
# /usr/local/nginx/sbin/nginx -s reload
2. 推流测试(以本地视频为例)
使用FFmpeg将本地视频文件推流至RTMP服务:
ffmpeg -re -i test.mp4 \
-c:v libx264 -crf 23 -preset medium \
-c:a aac -b:a 128k \
-f flv rtmp://yourdomain.com/live/mystream
- 参数说明:
-re模拟实时流,-c:v/a指定视频/音频编码,-f flv指定输出格式。
3. 拉流测试
- VLC播放:打开播放器,输入
rtmp://yourdomain.com/live/mystream - Web播放:浏览器访问
http://yourdomain.com/hls/mystream.m3u8
五、常见问题与优化建议
1. 防火墙放行
若服务器启用firewalld,需开放RTMP端口:
firewall-cmd --add-port=1935/tcp --permanent
firewall-cmd --reload
2. 推流失败排查
- 检查视频格式兼容性(需H.264+AAC编码)
- 确认FFmpeg是否安装成功(
ffmpeg -version验证) - 检查推流地址是否包含正确的应用名(如
live/mystream)
3. 性能优化
- 调整Nginx工作进程:
worker_processes auto; - 限制最大连接数:
worker_connections 1024; - 启用gzip压缩:
gzip on;
总结
通过Nginx+RTMP模块在CentOS系统中搭建流媒体服务,可快速实现低延迟直播、多端播放等功能。本文从环境准备到配置测试,完整覆盖了核心流程,用户可根据需求扩展录制、鉴权、转码等功能。实际部署中需注意防火墙策略、视频编码兼容性及服务器性能调优,以确保服务稳定高效运行。
