美文网首页
搭建nginx+rtmp推流环境

搭建nginx+rtmp推流环境

作者: 浙南旧事 | 来源:发表于2020-06-06 15:36 被阅读0次
    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推流环境

          本文链接:https://www.haomeiwen.com/subject/tfbttktx.html