流媒体协议之nginx-rtmp服务部署20230510

流媒体协议之nginx-rtmp服务部署

1.简介

nginx-rtmp服务是指使用nginx服务器和nignx-rtmp-moudle开源组件,实现rtmp协议服务端。本文介绍的如何将nginx-rtmp服务部署在linux服务器上

 

2.源码下载

2.1.nginx

wget http://nginx.org/download/nginx-1.12.2.tar.gz

tar -xzf nginx-1.12.2.tar.gz

2.2.nginx-rtmp-module

git clone https://github.com/arut/nginx-rtmp-module

2.3.pcre

wget https://sourceforge.net/projects/pcre/files/pcre/8.41/pcre-8.41.tar.bz2

tar -xjf pcre-8.41.tar.bz2

说明:nginx依赖该库

2.4.openssl

wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz

tar -xzf openssl-1.1.1d.tar.gz

说明:nginx依赖该库

2.5.zlib

wget https://github.com/madler/zlib/archive/v1.2.11.tar.gz

mv v1.2.11.tar.gz zlib_v1.2.11.tar.gz

tar -xzf zlib_v1.2.11.tar.gz

说明:nginx依赖该库

 

3.代码编译

由于编译nginx时会直接去编译其所依赖的库,所以只需要编译好nginx开源库就行(依赖的库会自动编译好)

首先配置nginx,生成makefile:

./configure --prefix=/work/workspace/rtmp_nginx/nginx-1.12.2/install \

--with-debug \

--with-compat \

--with-threads \

--with-pcre=../pcre-8.41 \

--with-openssl=../openssl-1.1.1d \

--with-zlib=../zlib-1.2.11 \

--with-http_ssl_module \

--with-http_v2_module \

--with-http_slice_module \

--with-http_stub_status_module \

--with-http_auth_request_module \

--with-http_sub_module \

--with-http_dav_module \

--with-http_flv_module \

--with-http_mp4_module \

--with-stream \

--add-module=../nginx-rtmp-module

生成的makefile在nginx-1.12.2中的obj目录中,其中已经包含了对依赖库的编译:

 

然后找到生成objs/nginx的地方,将-ldl –lpthread放到libcrypto.a后面,否则在链接的时候就会报错:

 

最后执行make;make install

注意,install目录不要事先创建好,否则会导致make install不会被执行:

正常的make install:

4.运行测试

首先进入install目录中,然后进入conf目录,修改nginx.conf文件,加入rtmp相关字段:

rtmp {

    server {

        listen 1935;

        chunk_size 4096;

        application ins { #播放的是/work/workspace/rtmp_nginx/install/ins/目录下的视频文件

            play /work/workspace/rtmp_nginx/install/ins;

            }

        application live{ #第一处添加的直播字段

                live on;

            }

    }

}

 

接下来运行nginx程序:

sudo ./sbin/nginx -c /work/workspace/rtmp_nginx/nginx-1.12.2/install/conf/nginx.conf

注意-c后面要用绝对路径,否则就会用默认的,该路径下的配置文件就不会被使用。

运行后可以在浏览器输入服务器的ip地址出现下面这个地址说明运行成功:

 

在linux服务器/work/workspace/rtmp_nginx/install/ins/目录(nginx.conf中配置的)下放入ins.mp4文件,然后本地使用vlc播放器,在网络串流中输入rtmp播放地址:rtmp://192.168.110.130:1935/ins/ins.mp4或者rtmp://192.168.110.130/ins/ins.mp4即可成功出图:

 

5.注意事项

nginx.conf文件中加入rtmp字段在拷贝或者输入过程中一定要注意{}成对,否则nginx会报错:nginx: [emerg] "rtmp" directive is not allowed here

 

Nginx重启命令:

killall nginx;

sudo ./sbin/nginx -c /work/workspace/rtmp_nginx/nginx-1.12.2/install/conf/nginx.conf

或者

sudo ./sbin/nginx -s reload -c /work/workspace/rtmp_nginx/nginx-1.12.2/install/conf/nginx.conf

 

出现nginx: [error] open() "/work/workspace/rtmp_nginx/nginx-1.12.2/install/logs/nginx.pid说明nginx已经退出了就不能使用reload了,直接使用开启命令即不要-s:

 

 

posted @ 2023-05-10 15:45  yuweifeng  阅读(408)  评论(0编辑  收藏  举报