从零开始搭建RTMP服务器,轻松实现直播推流与拉流
聚焦**从零搭建全链路RTMP直播推流拉流系统**这一核心需求,核心可采用轻量易上手的SRS开源服务器方案,适配云服务器或本地Linux环境,框架步骤包括:准备并配置基础环境(开放1935等核心端口)、安装部署SRS核心组件、启动并验证服务;推流端推荐使用OBS Studio,设置对应推流URL与自定义流密钥即可上传内容;拉流端可通过VLC、ffplay等工具播放,该流程覆盖基础全链路,快速适配个人测试、小体量项目等场景。
什么是RTMP?
RTMP(Real-Time Messaging Protocol,实时消息传输协议)是Adobe公司开发的一种用于实时数据传输的协议,最初用于Flash视频播放,如今被广泛应用于直播场景——比如电商直播、游戏直播、在线教育等,它的优势是延迟低(通常1-3秒)、稳定性强,是目前直播领域最常用的协议之一。
想要自己搭建直播平台,或者本地测试推流拉流,搭建一个RTMP服务器是最基础的一步,本文就用Nginx + Nginx-RTMP-Module这套主流方案,手把手教你从零搭建。
前置准备
在开始之前,你需要准备以下内容:
- 一台服务器:可以是云服务器(阿里云、腾讯云等),也可以是本地虚拟机,建议系统选 CentOS 7 或 Ubuntu 18.04+(本文以CentOS 7为例)。
- 基础工具:SSH客户端(比如Xshell、PuTTY),用于远程连接服务器;OBS Studio(推流用);VLC播放器(拉流测试用)。
开始搭建:步骤详解
步骤1:更新系统并安装依赖
首先登录服务器,先更新系统,然后安装编译Nginx所需的依赖包:
# 更新系统 yum update -y # 安装编译工具和依赖 yum install gcc pcre-devel zlib-devel openssl-devel -y
gcc:编译工具,用来编译源码;pcre-devel:Nginx重写模块需要;zlib-devel:压缩功能需要;openssl-devel:HTTPS支持需要。
步骤2:下载Nginx和RTMP模块源码
我们需要下载Nginx的源码,以及nginx-rtmp-module模块的源码(这个模块能让Nginx支持RTMP协议)。
# 进入/usr/local目录(习惯把软件放在这里) cd /usr/local # 下载Nginx源码(选稳定版,比如1.20.2) wget http://nginx.org/download/nginx-1.20.2.tar.gz # 下载nginx-rtmp-module源码 wget https://github.com/arut/nginx-rtmp-module/archive/master.zip # 解压源码 tar -zxvf nginx-1.20.2.tar.gz unzip master.zip
解压后,会得到nginx-1.20.2和nginx-rtmp-module-master两个文件夹。
步骤3:编译安装Nginx(加入RTMP模块)
进入Nginx源码目录,配置编译选项,把RTMP模块加进去:
cd nginx-1.20.2 # 配置:指定安装路径,加入RTMP模块 ./configure --prefix=/usr/local/nginx --add-module=../nginx-rtmp-module-master # 编译并安装 make && make install
这里--prefix=/usr/local/nginx是指定Nginx的安装路径,编译完成后,Nginx就安装在这个目录里了。
步骤4:配置Nginx的RTMP功能
编辑Nginx的配置文件/usr/local/nginx/conf/nginx.conf,在文件末尾添加RTMP配置块:
先打开配置文件:
vi /usr/local/nginx/conf/nginx.conf
在文件最后(http块外面)添加以下内容:
rtmp {
server {
listen 1935; # RTMP默认端口
chunk_size 4096;
# 配置直播应用
application live {
live on; # 开启直播
record off; # 关闭录制(如果需要录制可以改成on)
}
}
}
listen 1935:RTMP协议默认用1935端口,记得在云服务器的安全组里开放这个端口;application live:定义了一个名为live的直播应用,推流和拉流都会用到这个名称;live on:开启直播模式;record off:不保存直播录像(如果需要保存,可以把off改成on,并设置录像路径)。
保存并退出(按Esc,输入wq回车)。
步骤5:启动Nginx并检查状态
# 启动Nginx /usr/local/nginx/sbin/nginx # 检查Nginx是否启动成功 ps -ef | grep nginx
如果看到类似nginx: master process和nginx: worker process的进程,说明启动成功了!
测试:推流与拉流
现在RTMP服务器已经搭好了,我们来测试一下能不能用。
推流(用OBS Studio)
OBS是免费的推流软件,下载安装后,按以下步骤设置:
- 打开OBS,点击左下角“设置”;
- 选择“推流”,服务选“自定义”;
- 服务器填写:
rtmp://你的服务器IP/live(比如rtmp://123.45.67.89/live); - 串流密钥:自己随便填一个(比如
test123),后面拉流会用到; - 点击“确定”,然后点击OBS主界面的“开始推流”。
拉流(用VLC播放器)
VLC也是免费的播放器,用来测试拉流:
- 打开VLC,点击“媒体” -> “打开网络串流”;
- 输入拉流地址:
rtmp://你的服务器IP/live/串流密钥(比如rtmp://123.45.67.89/live/test123); - 点击“播放”,如果能看到OBS推的画面,说明成功了!
常见问题与注意事项
-
Nginx启动失败:
检查配置文件有没有语法错误,用命令/usr/local/nginx/sbin/nginx -t测试,如果报错,根据提示修改nginx.conf。 -
推流/拉流没反应:
- 检查云服务器安全组是否开放了1935端口(TCP协议);
- 检查服务器防火墙(CentOS 7用
firewall-cmd --list-ports查看,没开放的话用firewall-cmd --add-port=1935/tcp --permanent添加,然后firewall-cmd --reload生效)。
-
延迟太高:
可以调整OBS的“输出”设置,把关键帧间隔改小(比如1秒),能降低延迟。
通过Nginx + RTMP模块,我们用简单的几步就搭好了一个基础的RTMP服务器,你可以用它做本地直播测试,或者作为小型直播平台的后端,如果需要更高级的功能,比如多人直播、录像回放、转码等,还可以继续扩展配置哦~
赶紧动手试试吧!有问题欢迎在评论区交流~

