流媒体协议之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: