从零开始搭建RTMP服务器,轻松实现直播推流与拉流

2026-07-29 23:07:18 54阅读
聚焦**从零搭建全链路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这套主流方案,手把手教你从零搭建。

从零开始搭建RTMP服务器,轻松实现直播推流与拉流

前置准备

在开始之前,你需要准备以下内容:

  1. 一台服务器:可以是云服务器(阿里云、腾讯云等),也可以是本地虚拟机,建议系统选 CentOS 7Ubuntu 18.04+(本文以CentOS 7为例)。
  2. 基础工具: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.2nginx-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 processnginx: 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推的画面,说明成功了!

常见问题与注意事项

  1. Nginx启动失败
    检查配置文件有没有语法错误,用命令/usr/local/nginx/sbin/nginx -t测试,如果报错,根据提示修改nginx.conf

  2. 推流/拉流没反应

    • 检查云服务器安全组是否开放了1935端口(TCP协议);
    • 检查服务器防火墙(CentOS 7用firewall-cmd --list-ports查看,没开放的话用firewall-cmd --add-port=1935/tcp --permanent添加,然后firewall-cmd --reload生效)。
  3. 延迟太高
    可以调整OBS的“输出”设置,把关键帧间隔改小(比如1秒),能降低延迟。

通过Nginx + RTMP模块,我们用简单的几步就搭好了一个基础的RTMP服务器,你可以用它做本地直播测试,或者作为小型直播平台的后端,如果需要更高级的功能,比如多人直播、录像回放、转码等,还可以继续扩展配置哦~

赶紧动手试试吧!有问题欢迎在评论区交流~

文章版权声明:除非注明,否则均为亚朵原创文章,转载或复制请以超链接形式并注明出处。