ffmpeg+nginx推流服务

HLS直播配置

nginx服务器配置:

新建目录:用于存放nginx以及nginx-rtmp-moudle模块

#mkdir /usr/local/nginx

下载压缩包:进入到创建的nginx目录下下载,这里如果下载不成功可以把https改为http,之前一直可以下载,后面换了一台云服务器后https就下载不了了,不知道是不是被屏蔽的原因,换成http后解决了

#cd /usr/local/nginx
#wget http://nginx.org/download/nginx-1.12.2.tar.gz
#wget https://codeload.github.com/arut/nginx-rtmp-module/zip/master

如果没有wget命令的话执行下面的命令安装

#yum -y install wget

解压:

#tar -zxvf nginx-1.12.2.tar.gz
#unzip nginx-rtmp-module-master.zip 

同理,没有unzip命令的执行下面命令安装

#yum -y install unzip

安装nginx以及安装nginx模块之前,先安装一些依赖库:

#yum -y install gcc-c++ 
#yum -y install pcre pcre-devel  
#yum -y install zlib zlib-devel 
#yum -y install openssl openssl-devel

然后进行nginx-rtmp-module模块的安装:

#cd /usr/local/nginx/nginx-1.12.2

完成rtmp模块安装,=后面输入你的模块包的绝对路径

#./configure --add-module=/usr/local/nginx/nginx-rtmp-module-master
#make&make install

当添加的有多个模块时,./configure --add-module=后面跟多个模块一起编译,如:

./configure --add-module=/usr/local/nginx/nginx-rtmp-module-master --with-http_ssl_module

使用以下命令查看nginx是否启动成功:

#cd /usr/local/nginx/sbin
#./nginx –t

出现下图提示时表示配置成功
在这里插入图片描述

nginx以及相关模块安装完成
配置及启动服务支持hls
由于nginx-rtmp-module支持hls协议,因此我们可以直接在nginx.conf进行配置:

#vi /usr/local/nginx/conf/nginx.conf

加入以下内容rtmp模块:(rtmp{}的内容和http{}为同级,位置不要放错)

rtmp {  
    server {  
        listen 1935;  #监听的端口
        chunk_size 4000;  
        application hls {
            live on;
            hls on;
            hls_path /usr/local/html/hls;#视频流存放地址
            hls_fragment 5s;
            hls_playlist_length 15s;
            hls_continuous on; #连续模式。
            hls_cleanup on;    #对多余的切片进行删除。
            hls_nested on;     #嵌套模式。
        }
    }  
}

如下图所示

在这里插入图片描述

在http里添加一个直播流存放的地址:

location /hls {  #添加视频流存放地址。
        types {
            application/vnd.apple.mpegurl m3u8;
            video/mp2t ts;
        }
        #访问权限开启,否则访问这个地址会报403
        autoindex on;
        alias /usr/local/html/hls;#视频流存放地址,与上面的hls_path相对应,这里root和alias的区别可自行百度
        expires -1;
        add_header Cache-Control no-cache;
        #防止跨域问题
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';  
    }

如图:

在这里插入图片描述

设置好之后保存文件然后重启服务器:

#cd /usr/local/nginx/sbin
#./nginx -s reload

直播推流配置

obs推流

推流指的就是直播端将视频流推到设定的服务器位置。这里我使用的是obs进行推流:

在设置->串流 中填写信息:URL为 rtmp://xxx:1935/hls,xxx为你的服务器的IP地址,hls是用来存放流媒体的,”对应的就是conf文件中设置的application名称,流名称可自定义,服务器端生成的m3u8文件就是以此命名的。设置完成之后,点击“开始推流”,推流端的设置就完成了。

Ffmpeg推流

ffmpeg-3.4-64bit-static直接上传服务器,解压后即可使用,如果服务器不是对应的版本,可以直接到官网下载对应的即可;

推流密令

#./ffmpeg  -re -i "111.mp4" -vcodec copy -acodec copy -f flv -y rtmp://192.168.1.1:1935/hls

循环推流密令

#./ffmpeg -threads 2 -re -fflags +genpts -stream_loop -1 -i "111.mp4" -c copy -f flv rtmp://192.168.1.1:1935/hls

三、拉流设置
观看直播就比较简单了,可以简单的使用h5的vedio标签就可以观看了。

可以访问http://xxx:80/hls/abcd.m3u8来观看直播,其中xxx为你的服务器IP地址,后面的abcd就是在推流时候使用的秘钥,是自定义的。或者使用

<video>  
    <source src="http://xxx:80/hls/abcd.m3u8"/>  
    <p class="warning">Your browser does not support HTML5 video.</p>  
</video>

在此处遇到一个小坑,上述访问地址我是根据网上资料来写的,但是在我自己实际使用时发现服务器把推流时使用的密钥自动生成一个目录,然后把流文件存放到了里面,并不是直接生成abcd.m3u8,如下图

所以我使用的访问地址是http://xxx:80/hls/abcd/index.m3u8,然后就成功拉到直播流了。

相关软件下载链接

链接:https://pan.baidu.com/s/1DRnIW9dacABQUXI3DHYS5A
提取码:9ju1
————————————————
玉念聿辉

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玉念聿辉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值