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