搭建RTMP服务器,需要哪些配置和步骤?
- 云服务器
- 2025-12-12
- 6
搭建RTMP服务器是进行直播推流或视频点播服务的重要环节,RTMP(RealTime Messaging Protocol)是一种专为高效传输音视频数据设计的协议,广泛应用于直播行业,以下是搭建RTMP服务器的详细步骤、注意事项及相关配置说明。
环境准备
在开始搭建前,需确保服务器满足基本要求:
- 操作系统:推荐Linux(如Ubuntu 20.04/CentOS 7),稳定性较好,本文以Ubuntu为例。
- 硬件配置:根据并发需求选择,基础配置建议2核CPU、4GB内存、50GB存储(若存储大量视频文件可扩展)。
- 网络环境:需公网IP,防火墙开放1935端口(RTMP默认端口)及80/443端口(若配置HTTPFLV或HTTPS)。
- 依赖工具:安装nginx(作为反向代理服务器)、nginxrtmpmodule(RTMP模块)、ffmpeg(推流测试工具)。
可通过以下命令更新系统并安装基础依赖:

安装Nginx及RTMP模块
Nginx本身不支持RTMP协议,需通过第三方模块nginxrtmpmodule实现。
下载Nginx及RTMP模块
# 下载Nginx源码(以1.18.0为例) wget http://nginx.org/download/nginx1.18.0.tar.gz tar zxvf nginx1.18.0.tar.gz # 下载RTMP模块(最新版本可从GitHub获取) git clone https://github.com/arut/nginxrtmpmodule.git
编译安装Nginx
进入Nginx源码目录,编译时添加RTMP模块:

编译完成后,Nginx默认安装至/usr/local/nginx。
配置RTMP服务器
编辑Nginx配置文件/usr/local/nginx/conf/nginx.conf,在文件末尾添加RTMP服务配置(注意保留原有HTTP配置):
# RTMP服务配置 rtmp { server { listen 1935; # RTMP监听端口 chunk_size 4096; # 数据块大小,默认4096字节 # 直播推流配置 application live { live on; # 启用直播模式 record off; # 不录制直播流(如需录制可改为record on;) allow play all; # 允许所有人播放 } # 视频点播配置(可选) application vod { play /opt/video; # 指定视频存储路径,需提前创建目录并放置视频文件 } } } # HTTP服务配置(用于支持HTTPFLV或HLS协议) http { server { listen 80; server_name localhost; # HTTPFLV配置(低延迟播放) location /live { flv_live on; # 启用HTTPFLV chunked_transfer_encoding on; # 启用分块传输 add_header 'AccessControlAllowOrigin' '*'; # 允许跨域 alias /tmp; # 临时流存储路径(需提前创建) } # HLS配置(兼容iOS,需配合ffmpeg转码) location /hls { types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } root /tmp; # HLS切片存储路径 add_header 'AccessControlAllowOrigin' '*'; } } }
配置说明:
- application live:直播推流应用,推流地址格式为rtmp://服务器IP:1935/live/流名称。
- application vod:点播应用,播放地址格式为rtmp://服务器IP:1935/vod/视频文件名。
- HTTPFLV:通过HTTP协议传输FLV格式视频,延迟较低(约13秒)。
- HLS:将视频切片为TS文件,生成m3u8索引,适合iOS设备,但延迟较高(约510秒)。
创建必要目录并启动服务
# 创建HTTPFLV和HLS存储目录 sudo mkdir p /tmp/live /tmp/hls sudo chmod 777 /tmp/live /tmp/hls # 启动Nginx sudo /usr/local/nginx/sbin/nginx # 检查服务状态(应显示“nginx: process is running”) sudo /usr/local/nginx/sbin/nginx t
推流与播放测试
使用OBS推流
- 打开OBS,设置“串流服务”为“自定义”,服务器填写rtmp://服务器IP:1935/live,串流密钥为自定义的流名称(如test123)。
- 点击“开始推流”,若OBS显示“连接成功”,则推流成功。
使用VLC播放
- 打开VLC,选择“媒体”→“打开网络串流”,输入播放地址:
- RTMP原生播放:rtmp://服务器IP:1935/live/test123
- HTTPFLV播放:http://服务器IP/live/test123.flv
- HLS播放:http://服务器IP/hls/test123.m3u8
使用FFmpeg转码HLS(可选)
若需支持HLS低延迟,可使用FFmpeg将RTMP流转码为HLS:

ffmpeg i "rtmp://服务器IP:1935/live/test123" c:v libx264 c:a aac f hls hls_time 2 hls_list_size 6 /tmp/hls/test.m3u8
参数说明:hls_time 2表示每片2秒,hls_list_size 6保留6个切片文件。
常见问题与优化
防火墙与端口开放
确保服务器防火墙开放1935(RTMP)、80(HTTP)、443(HTTPS)端口:
sudo ufw allow 1935 sudo ufw allow 80 sudo ufw allow 443 sudo ufw enable
性能优化
- 调整worker进程数:根据CPU核心数设置,在nginx.conf的main段添加worker_processes auto;。
- 启用GZIP压缩:在http段添加gzip on; gzip_types video/mp2t application/vnd.apple.mpegurl;。
- 磁盘IO优化:若录制直播流,建议使用SSD存储。
安全加固
- 修改默认串流密钥,避免使用简单名称。
- 通过allow publish 服务器IP; deny publish all;限制推流来源IP(仅允许特定IP推流)。
相关问答FAQs
Q1: 推流时提示“连接超时”怎么办?
A: 首先检查服务器防火墙是否开放1935端口,其次确认推流地址和串流密钥是否正确(注意rtmp://后的IP需为公网IP),若使用内网穿透,需确保映射端口与配置一致。
Q2: HLS播放卡顿或延迟过高如何解决?
A: HLS延迟主要受切片时长影响,可通过减小hls_time参数(如改为1秒)降低延迟,但会增加服务器压力,同时检查网络带宽是否充足,或改用HTTPFLV协议(延迟更低)。