当前位置:首页 > 云服务器 > 正文

搭建RTMP服务器,需要哪些配置和步骤?

搭建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(推流测试工具)。

可通过以下命令更新系统并安装基础依赖:

搭建RTMP服务器,需要哪些配置和步骤? 第1张

安装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模块:

搭建RTMP服务器,需要哪些配置和步骤? 第2张

编译完成后,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:

搭建RTMP服务器,需要哪些配置和步骤? 第3张

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协议(延迟更低)。

0