安派尔

nginx+rtmp实现流服务器

2024/12/03
4
0

nginx+rtmp实现流服务器

前期准备

软件下载地址

nginx官网:https://nginx.org/en/download.html
可以复制连接后使用wget进行下载:
wget https://nginx.org/download/nginx-1.28.0.tar.gz

rtmp:https://github.com/arut/nginx-rtmp-module
在右侧releases tag找到相关发版的软件包进行下载
一样使用wget下载:
wget https://github.com/arut/nginx-rtmp-module/archive/refs/tags/v1.2.2.tar.gz

软件解压

因为下载的都是tar.gz的软件包,使用tar命令进行解压。

tar -zxvf nginx-1.28.0.tar.gz
tar -zxvf v1.2.2.tar.gz

解压后得到

编译安装及配置

编译安装

cd进入nginx主目录进行编译安装,可以使用prefix指定需要安装的目录,或者采用其默认的安装目录。这里采用默认的目录,直接加上需要编译的模块即可。

./configure --add-module=../nginx-rtmp-module-1.2.2
make
make install

配置

cd到安装目录/usr/local/nginx/conf,进行配置,建议在进行配置前进行备份。
添加rtmp配置,更多使用说明可查看该项目在github上的说明。

rtmp {
    server {
        listen 1935;
        chunk_size 4000;
        application mytv {
            live on;
            #以下可根据实际情况进行添加需要回调的地址
            #on_publish http://localhost:8080/publish;
            #on_play http://localhost:8080/play;
            #on_done http://localhost:8080/done;
        }
    }
}

如需要查看rtmp的状态,可在http中添加

server {
        listen      8080;
        location /stat {
            rtmp_stat all;
            rtmp_stat_stylesheet stat.xsl;
        }
        location /stat.xsl {
            root /usr/local/nginx/html/;
        }
    }

注意:要通过http查看rtmp的状态,需要一个关键的文件“stat.xsl”,在这里我把这个文件拷贝到/usr/local/nginx/html/下,该文件在一开始解压的nginx-rtmp-module目录可以找到。

启动nginx,访问对应的地址即可看到流服务器的状态。

OBS推流与VLC拉流

OBS推流

要先设置服务器的防火墙打开1935端口,这里服务器配置不进行赘述。OBS打开一个视频文件,进行播放。
进行OBS推流设置。
注意服务器处的填写,端口后面的mytv为nginx中设置的application的名称,推流码可以自己设定。

设置完成后开始直播。

这时再去访问查看状态的服务。可以看到有一个流正在流入

VLC拉流播放

媒体->打开网络串流

填入我们的视频流的地址

点击播放,即可观看由OBS直播的视频了。

至此,nginx+rtmp实现流服务器完成。