搭建nginx+rtmp推流环境

  1. 先下载源码。

nginx
官网 http://nginx.org/en/download.html
下载地址 http://nginx.org/download/nginx-1.18.0.tar.gz

rtmp模块
下载地址 https://github.com/arut/nginx-rtmp-module/

zlib
官网 http://zlib.net/
下载地址 http://zlib.net/zlib-1.2.11.tar.gz

pcre
官网 http://www.pcre.org/
下载地址 https://ftp.pcre.org/pub/pcre/pcre-8.44.tar.gz

openssl
官网 https://www.openssl.org/
下载地址 https://www.openssl.org/source/openssl-1.1.1g.tar.gz

  1. 把这5个源码包解压到同级目录下(比如/home/test/nginx2/)并编译。
tar -xf ./nginx-1.18.0.tar.gz
unzip ./nginx-rtmp-module-master.zip
tar -xf ./zlib-1.2.11.tar.gz
tar -xf ./pcre-8.44.tar.gz
tar -xf ./openssl-1.1.1g.tar.gz
cd ./nginx-1.18.0/
./configure --add-module=../nginx-rtmp-module-master/ --with-pcre=../pcre-8.44/ --with-zlib=../zlib-1.2.11/ --with-openssl=../openssl-1.1.1g/
make

编译完成后,可执行程序nginx在nginx-1.18.0/objs/目录下。

  1. 创建nginx运行目录。

这个一般是在/usr/local/nginx目录下,这里在源码顶层目录下(比如/home/test/nginx2/)自行创建,并从nginx源码目录里拷贝conf,html目录。

mkdir ./nginx-run
mkdir ./nginx-run/logs
cp -rf ./nginx-1.18.0/conf/ ./nginx-run/
cp -rf ./nginx-1.18.0/html/ ./nginx-run/
  1. 运行nginx。
/home/test/nginx2/nginx-1.18.0/objs/nginx -p /home/test/nginx2/nginx-run/

执行 ps -A | grep nginx
可以看到有两个进程,假设进程号是7992, 7993。
执行 netstat -npa | grep 7992
可以看到nginx在监听tcp 80端口。

在远端通过浏览器访问本机(服务端)的ip地址,就可以看到"Welcome to nginx!"的界面了。

  1. 配置rtmp。

修改nginx-run/confg/nginx.conf,在其末尾添加如下内容:

rtmp {
    server {
        listen 1935;
        chunk_size 4096;
        application test01 {
            live on;
        }
    }
}

注意,新增的rtmp节点是配置文件的顶层节点,与http节点是同级的,而不是放在http节点内部。
重启nginx,并用netstat查看,可以看到nginx在同时监听tcp 80, 1935端口。

  1. 推流。
ffmpeg -re -stream_loop -1 -i src_h264.mp4 -vcodec copy -f flv rtmp://localhost/test01

参数说明:
-re 用于控制帧率,采用输入码流的原始帧率。
-stream_loop -1 表示循环推流。
-i src_h264.mp4 指定源码流文件。
-vcodec copy 表示输出的codec采用输入的codec,即没有转码。如果输入是h264,输出也是h264。
-f flv 表示输出的封装格式。这里输入是mp4封装格式,输出是flv(flash video)封装格式。
rtmp://localhost/test01 指定推流地址。这里是推到本机的test01,这个test01与前面rtmp配置的application后面的内容要一致。

执行后,ffmpeg会一直运行,循环推流到test01。
用netstat查看,可以看到新增了一个localhost:xxx到localhost:1935的tcp连接。

  1. 拉流。

在远端用vlc播放工具,打开网络流,地址是rtmp://本机(服务端)的ip地址/test01,就可以看到视频内容了。
用netstat查看,可以看到新增了一个远端到本端1935的tcp连接。

你可能感兴趣的:(搭建nginx+rtmp推流环境)