环境:centos7、nginx 1.15.2、nginx-rtmp-module(nginx模块)、win7主机,vmvare虚拟机(已安装号centos7系统)

  安装前提:centos已安装OpenSSL、pcre、zlib

1、检查依赖文件是否安装

       检测openssl:rpm -qa | grep openssl

        检测pcre:rpm -qa | grep pcre

        检测zlib:rpm -qa | grep zlib

       我的机器上都已经安装……继续下一步

 2、下载nginx和rtmp模块

       使用的是Git下载的,您也可以使用其他方式获得源码,为方便使用,在/home下建立一个source目录

           

cd /home
mkdir source

      下载源码

cd ./source
git clone https://github.com/nginx/nginx.git             #从github服务器上将nginx的源代码下载下来
git clone https://github.com/arut/nginx-rtmp-module.git  #将rtmp模块的源码下载下来

 3、配置nginx的安装 

       进入nginx目录中,编写一个执行脚本,(也可以直接执行命令)

   

vim config.sh
#然后输入下面的内容
./auto/configure --prefix=/usr/local/nginx \
	
		--with-http_ssl_module \
	
		--with-http_v2_module \
	
		--with-http_flv_module \
	
		--with-http_mp4_module \
	
		--add-module=../nginx-rtmp-module/

      ./auto/configure是nginx的编译配置文件

      每行后面的\告诉解析器接下来的一行与该行是统一个命令

      给脚本赋予执行权限  ,并执行脚本

chmod 777 config.sh
./config.sh

      一定要加上路径标识

      若出现以下界面说明配置没有问题

     

nginx rtmp支持h265 nginx rtmp module_直播

4、开始编译并安装

make 
make install

      也可以将两个命令合成一个命令执行:make && make install

      若出现错误,可能是gcc、c++编译器没有安装,执行下面的安装命令重新执行上面的命令即可

 

yum -y install gcc gcc-c++

    安装成功后即可,若出现其他错误,请自行解决

5、测试nginx是否安装成功

      启动nginx:

/usr/local/nginx/sbin/nginx

      其他nginx命令

#重新加载nginx配置文件
/usr/local/nginx/sbin/nginx -s reload    

#停止nginx
/usr/local/nginx/sbin/nginx -s stop

       使用:netstat -tunpl 命令查看80端口是否监听(该命令可能会报错,请参考下面安装net-tools工具)

      查看服务器的ip地址。由于centos7 请使用以下命令查看网络地址信息

ip addr

    若想使用ifconfig命令(netstat命令也一样),安装net-tools工具包

yum -y install net-tools

    然后通过本地主机访问nginx服务,在浏览器中输服务器的ip地址并回车,若看到以下界面说明nginx已安装成功

          

nginx rtmp支持h265 nginx rtmp module_nginx rtmp支持h265_02

        若没有出现上面的界面,并且服务器的80端口已正常监听,可能是防火墙的问题,关闭centos7的防火墙,centos7的防火墙默认是firewalld,输入以下命令即可关闭firewalld

service stop firewalld

    再次通过浏览器访问服务器ip,若还是不成功,可能是selinux的问题,请自行百度查找关闭selinux的方法

6、配置nginx.conf文件,启用rtmp服务

     

cd /usr/local/nginx/conf

#编辑nginx文件
vim nginx.conf
#在文件的末尾写入以下内容
rtmp  {
    server  {
        #rtmp服务监听的端口
        listen 1935;           
        chunk_size 4096;
        #rtmp线路1
        application live  {
            live on;
            record off;
        }
        #直播线路2
        application live2  {
            live on;
            record off;
        }
        application vod  {
            play /var/flvs;
        }
        application vod_http  {
            play http://192.168.1.135/vod;
        }
        #是否启用hls协议
        application hls  {
            live on;
            hls on;
            hls_path /tmp/hls;
        }
    }
}

     配置完成后重新加载nginx的配置,并查看对应的端口是否成功监听

7、测试推流和拉流

推流测试

      地址:rtmp://<IP>/live/房间标识

      如:rtmp://192.168.1.135/live/test  (使用的是rtmp协议,live为配置文件中直播线路的application名称,test为房间标识)

       可以使用OBS软件进行推流(百度搜索)

       这里我使用的是ffmpeg来进行推流,该软件可以将一个视频文件推到一条直播流中

       使用本地主机,下载ffmpeg,下载完成后解压文件,并进入bin目录

          

nginx rtmp支持h265 nginx rtmp module_rtmp_03

          为方便,我在bin目录下放了一个MP4的文件,按住shift键,在文件浏览器空白处右击,选择在此处打开命令窗口

          

nginx rtmp支持h265 nginx rtmp module_nginx rtmp支持h265_04

         在dos窗口中执行下面的命令

ffmpeg -re -i batch.mp4 -c copy -f flv rtmp://192.168.1.135:1935/live/test

        出现以下界面说明正在推流,

           

nginx rtmp支持h265 nginx rtmp module_linux_05

测试拉流

       点击拉流测试进入测试页面

       

nginx rtmp支持h265 nginx rtmp module_nginx rtmp支持h265_06

              出现以上界面时,在server中填写rtmp的服务器地址,即:rtmp://192.168.1.135/live。在stream中填写房间标识,即:test,然后点击start,若没有问题,稍等一会即可出现视频画面。

            若出现以下界面。请更换浏览器

            

nginx rtmp支持h265 nginx rtmp module_rtmp_07

附加:添加权限验证

       有些时候我们需要验证这个推流地址是否是拥有者正在使用,则可以添加一个密钥key验证身份,

       首先,配置nginx.conf中的rtmp模块

       

rtmp  {
    server  {
        listen 1935;
        chunk_size 4096;
        #回调数据转发方式
	    notify_method GET;
        application live  {
            live on;
        #开启推流回调验证
	    publish_notify on;
        #回调验证地址
	    on_publish http://zhibo.zgc.com/api/client/callback;
            #record off;
        }
        application live2  {
            live on;
            record off;
        }
        application vod  {
            play /var/flvs;
        }
        application vod_http  {
            play http://192.168.1.135/vod;
        }
        application hls  {
            live on;
            hls on;
            hls_path /tmp/hls;
        }
    }
}

      然后重新载入nginx的配置文件,对应的推流地址为:

          rtmp://192.168.1.135/live/test?key=[key]

     在对应的回调地址中写验证程序(这里使用的是php),由于刚才配置的回调数据转发方式的GET,这里是有$_GET接收数据

     

$steam = $_GET['name'];     //房间标识名称
$key   = $_GET['key'];      //接收的密钥
        
//验证逻辑,check()方法自己定义
$res = check($steam,$key);
if($res){
    //验证成功
    return ;
}else{
    //验证失败,返回一个404错误
    header('HTTP/1.0 404 Not Found');
}