利用nginx搭建rtmp流服务器

1、RTMP介绍

RTMP全程Real Time Protocal(实时小时传输协议)。

该协议基于TCP,是一个协议族,包括RTMP基本协议及RTMPT/RTMPS、RTMPE等多种变种协议。

RTMP是是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流

媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media

Server/Ultrant Media Server/red5等。

2、nginx rtmp流服务器的搭建和使用

本次此处使用Ubuntu22.04LTS系统,通过源码编译安装的方式安装nginx rtmp流服务器。

2.1、什么是nginx?

nginx是一款优秀的反向代理工具,通过nginx可以实现搭建高可用的轻量级web服务器,除此之外,通

过Nginx自带的rtmp模块,也可以实现rtmp服务器的搭建。当我们想基于nginx搭建RTMP流服务器时,

需要加载ninx-rtmp-module模块。

2.2、开始搭建

  1. 安装依赖库
    在编译和安装 Nginx 前,需要确保系统中已经安装了以下依赖项:

GNU C 和 C++ 编译器

PCRE (Perl Compatible Regular Expressions) 库

zlib 压缩库

OpenSSL 库

可以使用以下命令在 Ubuntu 系统中安装以上依赖项:

sudo apt-get update
sudo apt-get install build-essential libpcre3-dev zlib1g-dev libssl-dev
  1. 下载nginx-rtmp-module模块

开源的nginx-rtmp-module模块,封装了rtmp server。nginx可以用此模块可以很简单提供RTMP服务。

链接:nginx-rtmp-module

你可以通过git clone下来nginx-rtmp-module的源码,这里不多讲解。

  1. 下载nginx源码

可以从 Nginx官方网站下载最新的稳定版本,例如:

wget https://nginx.org/download/nginx-1.24.0.tar.gz
  1. 编译配置

下载完成后,需要解压并进去源码目录

tar -zxvf nginx-1.24.0.tar.gz
cd nginx-1.24.0

使用以下命令进行编译配置:

./configure \
 --with-threads \
 --with-http_stub_status_module \
 --with-http_ssl_module \
 --with-http_realip_module \
 --with-stream \
 --with-stream_ssl_module \
 --add-module=/home/nginx/nginx-rtmp-module

注意,配置命令中--add-module=/home/nginx/nginx-rtmp-module中/home/nginx/nginx-rtmp-module

是你通过git clone下来的nginx-rtmp-module的源码目录,每一个人都不一样,切记。

  1. 开始编译

完成配置后,可以使用以下命令开始编译:

make

安装

编译完成后,可以使用以下命令安装 Nginx:

sudo make install

将 Nginx 可执行文件连接到系统 PATH 中的目录:

sudo ln -s /usr/local/nginx/sbin/nginx /usr/local/bin/nginx

2.3、开始使用

  1. 简单介绍nginx使用命令

Nginx 的配置文件默认位于 /usr/local/nginx/conf/nginx.conf,将本页的配置示例添加到文件末尾即可。Nginx 基本操作命令如下:

检查配置文件:

sudo nginx -t

如果 Nginx 配置文件验证成功,则可以启动 Nginx:

sudo nginx

重新加载正在运行的 Nginx 并应用新配置,建议在操作前检查配置是否无误:

sudo nginx -s reload

停止 Nginx:

sudo nginx -s stop
  1. 配置rtmp流服务

通过vim命令打开nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf

接着在配置的最后面加上rtmp流服务器的配置,配置如下。

rtmp {
    server {                   # 标识为一个服务
        listen 8890            # rtmp流服务器监听的端口号
        so_keepalive=2s:1:2;   # 
        chunk_size 4000;       # 流复用块的大小,值越大cpu消耗越低
        application live {     # live是推拉流的路径名字
            live on;           # 开始实时直播
        }
    }
}

配置完成之后,输入:wq,然后进行启动nginx。

sudo nginx -t
sudo nginx

此时,rtmp流服务器就搭建完成。

3、推拉流验证

3.1、安装

  1. 推流软件OBS

OBS下载地址

打开上述链接,然后自行下载安装,这里不多讲述如何安装OBS。

  1. 拉流软件VLC

VLC下载地址

打开上述链接,然后自行下载安装,这里同样不多讲述如何安装VLC。

3.2、推流

  1. 添加数据源

打开OBS软件,其界面如下:

根据上图红色框的提示,点击+进行数据源添加,如下图所示:

这里,数据源有很多种类,建议采用媒体源,如下图:

根据红色框提示,点击确定,然后自己找一个视频添加进去,如下图:

这里,我添加了一个视频,然后点击确定。

  1. 设置推流地址

点击OBS主界面右下角的设置按钮,跳转到设置界面,如图所示:

接着,点击推流,在推流设置页面中填写服务器串流密钥

1)服务器地址
服务器地址组成如:rtmp://ip:port/path

  1. ip:rtmp流服务器安装的linux系统的IP,这里我用的是阿里云主机,所以填写了阿里云主机的公网IP,你根据
    自己的情况填写。
  2. port:rtmp流服务监听的端口号,我们已经配置为8890.
  3. path:live推流路径,我们已经配置为live

2)串流密钥
串流密钥很简单,自己填写一段数字就可以,这里我填写123.

填写推流配置完成后,点击确定,回到主界面,点击开始推流。

3.3、拉流

  1. 打开VLC软件,点击媒体选项,显示出来媒体菜单,然后选中打开网络串流.

  2. 在打开媒体页面中,填写拉流URL,如下图:

其格式就是我们在OBS推流中设置的推流服务器地址串流密钥,然后点击播放。

  1. 播放界面

至此,我们的推拉流就完成。

posted @ 2024-01-17 17:32  ydqun  阅读(1390)  评论(0编辑  收藏  举报