文章目录

  • 相关环境:
  • 一、Nginx部署:
  • 二、ffmepg部署
  • 三、配置ffmpeg转发
  • 四、写前端访问代码查看:
  • 五、报错相关:
    • 1、如果到启动时缺少了ffmpeg模块
  • 六、写在最后:

任务需求:由于各个浏览器已经终止了适配Flash播放插件,故此监控视频从之前的Rtmp格式变为Hls(m3u8)格式

相关环境:

  • 海康威视:
    网页配置监控视频端口:80(可修改),需账号密码
    流媒体传输监控视频端口:554(可修改)

  • 部署环境:
    系统版本:CentOS7.5
    Nginx版本:1.19.2
    ffmpeg版本:2.2
    IP:192.168.31.88
    原参考链接


一、Nginx部署:

主要安装参考链接
1、编译安装nginx

# yum -y install pcre-devel openssl openssl-devel        //安装依赖
# wget http://nginx.org/download/nginx-1.16.0.tar.gz        //下载nginx包
# tar xf nginx-1.16.0.tar.gz && cd nginx-1.16.0
# ./configure --prefix=/application/nginx  --with-http_ssl_module    //编译安装nginx
# make && make install

2、修改nginx配置文件,添加如下内容并重新载入配置文件

# vim /application/nginx/conf/nginx.conf
user  root;
worker_processes  1;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;sendfile        on;keepalive_timeout  65;server {listen       20000;server_name  localhost;location / {root   html;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}location /hls {types{application/vnd.apple.mpegurl m3u8;video/mp2t ts;}root html;add_header Cache-Control no-cache;add_header Access-Control-Allow-Origin *;}
}
}
# /application/nginx/sbin/nginx -s reload //重新加载启动

二、ffmepg部署

ffmpeg命令参考这个文章

1、安装依赖
# yum install yasm -y
2、下载ffmpeg并安装
# git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
# cd ffmpeg     //解压并进入目录
# ./configure --prefix=/usr/local/ffmpeg
# make
# make install
3、拷贝命令到/usr/bin     //方便后面调用
# ls /usr/local/ffmpeg/        //查看安装目录生成的文件
bin  include  lib  nohup.out  share
# cp /usr/local/ffmpeg/bin/* /usr/bin/  //复制命令

三、配置ffmpeg转发

1、启用ffmpeg进行推流
# ffmpeg -re -rtsp_transport tcp -i rtsp://账号:密码@IP:端口/mpeg4/ch1/sub/av_stream.mp4 -acodec aac -strict experimental -ar 44100 -ac 2 -b:a 96k -r 25 -b:v 500k -s 480*480 -c `copy` -f hls -hls_time 2.0 -hls_list_size 0 -hls_wrap 15 /application/nginx/html/hls/test.m3u8-i  //要处理视频文件的路径,此处地址是一个监控摄像头
-acodec //音频处理的格式
-strict experimental    //更标准的严格性
-ar //设置音频采样率
-ac //设置通道为2
-b:a //要将输出文件的音频比特率设置为96 kbit/s
-r //要强制输出文件的帧频为24 fps
-b:v //要将输出文件的视频比特率设置为500 kbit/s。
-s //分辨率,传输的带宽根据分辨率来设定的,-b:v不能控制
-f //强制输出的视频格式
-hls_time  //为切片的秒数
-hls_list_size //设置播放列表保存的最多条目,我这里设置为0会保存有所片信息,默认值为5
-hls_wrap //为切片的个数

Tips:-s参数在ffmpeg转发命令里面就算使用了-c copy参数也不会生效!具体的分辨率是根据海康威视监控视频的分辨率来定的(主码流和子码流不相同)。主码流一般为1920x1080P[平均2M网速],子码流一般为1280x720P[平均1.2M网速],704x576[平均800Kb]。海康威视平台配置如下图,设置码率类型为定码率的话流量要稳定一些。


四、写前端访问代码查看:

<html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1.0"><link rel="shortcut icon" href="./static/logo.ico"><style type="text/css">html,body{margin:0px;height:100%;width:100%; display: flex; align-items: center}#video{width:1000px;height:600px;}</style><title>无BUG</title></head>
<body style="margin:0;overflow:hidden"><video id="video" muted></video><script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script><script>function initVideo () {let video = document.getElementById('video')if(Hls.isSupported()) {let hls = new Hls()//该hls地址为nginx配置中的地址hls.loadSource('http://192.168.31.88:20000/hls/test.m3u8')hls.attachMedia(video)hls.on(Hls.Events.MANIFEST_PARSED,()=>{video.play()});}else if (video.canPlayType('application/vnd.apple.mpegurl')) {video.src = 'http://192.168.31.88:20000/hls/test.m3u8'video.addEventListener('loadedmetadata',function() {video.play()})}}initVideo()</script>
</body></html>
  • 可以在pc机浏览器上查看视频
  • 后续出现跨域问题配置Nginx端口访问index.html即可

五、报错相关:

1、如果到启动时缺少了ffmpeg模块

参考链接
解决办法:
1、去其他服务器上有这个模块的拷贝过来libva.so.1 、libva-drm.so.1
2、去下载这个模块放在对应的位置
# ldd `which ffmpeg` //查看缺少的模块


六、写在最后:

1、主码流和子码流区分如下图:

2、各个直播协议的优缺点如下图:

3、如果是子码流访问的话,需要将子码流的分辨率码率上限对应

4、-vf scale=320:240这个参数只能在将Rtsp转发为Rtmp的时候使用

5、参考链接以重要程度排序
一、二、三、四

6、其他链接:
①通过flv的方式转发
②vue的前端的配置

Nginx+ffmpeg实现Hls(m3u8)推流播放,不使用flash相关推荐

  1. 使用Nginx+FFMPEG搭建HLS直播转码服务器

    FROM:http://blog.csdn.net/wutong_login/article/details/42292787 目的:使Nginx支持Rtmp协议推流,并支持hls分发功能及FFMPE ...

  2. 使用ffmpeg转码m3u8并播放及跨域问题

    简介 随着客户的增加,mp4文件播放的弊端也日益凸显,主要集中在两个方面 当视频时长比较长的时候,mp4的关键帧元素往往很大,需要加载很长时间才能开始播放,网速不好的情况缓冲加载就要20多秒的时间,客 ...

  3. 使用ffmpeg转码m3u8并播放

    简介 随着客户的增加,mp4文件播放的弊端也日益凸显,主要集中在两个方面 当视频时长比较长的时候,mp4的关键帧元素往往很大,需要加载很长时间才能开始播放,网速不好的情况缓冲加载就要20多秒的时间,客 ...

  4. nginx HLS m3u8播放视频跨域问题

    采用HLS+m3u8方式播放视频,在播放的时候会报跨域问题.例如:https://www.***.com/crossdomain.xml找不到. 方法1:在跨域的网站根目录放crossdomain.x ...

  5. Nginx Rtmp Module - HLS切片和级联播放

    #Nginx Rtmp Module - HLS切片和播放 1.名词解释 媒体片段文件(.ts): 媒体片段是由源站生成的,基于编码后的媒体源,并且是由一系列的 .ts 格式的文件组成,其中包含了你想 ...

  6. 使用ffmpeg搭建HLS直播系统

    [时间:2018-04] [状态:Open] [关键词:流媒体,stream,HLS, ffmpeg,live,直播,点播, nginx, ssegment] 0 引言 本文作为HLS综述的后续文章. ...

  7. Windows上搭建rtsp-simple-server流媒体服务器实现rtsp、rtmp等推流以及转流、前端html与Vue中播放hls(m3u8)视频流

    场景 Nginx-http-flv-module流媒体服务器搭建+模拟推流+flv.js在前端html和Vue中播放HTTP-FLV视频流: Nginx-http-flv-module流媒体服务器搭建 ...

  8. [转]使用FFmpeg将视频推流到nginx,通过vlc拉流播放(通过命令的方式)

    安装完FFmpeg,nginx,nginx-rtmp-module,vlc后就可以进行推流.拉流测试了.博主的nginx安装在VMWare的Ubuntu中(安装方法可以参考https://blog.c ...

  9. 推流拉流RMTP方案:Nginx+ffmpeg/obs+vlc/h5

    RMTP方案:Nginx+ffmpeg/obs+vlc/h5 服务器安装 1.依赖 sudo apt-get update  sudo apt-get install libpcre3 libpcre ...

最新文章

  1. 微信小程序多张图片和表单一起上传,验证表单及进度条的实现完整代码
  2. Symbols in Interllij IDEA
  3. leetcode 318. Maximum Product of Word Lengths | 318. 最大单词长度乘积
  4. php的内置函数strrpos_php strrpos 字符串查找函数内部源码实现
  5. pytorch-LSTM的输入和输出尺寸
  6. php json获取get请求,PHP简单的Curl的Get请求和Curl的Post请求和file_get_contents的Get请求获取接口JSON数据...
  7. 施一公点赞的高颜值蛋白质!
  8. Qt工作笔记-右键菜单造成内存泄漏等分析
  9. python 深度 视差 计算_2,Learn about Parallax(视差贴图)
  10. es2015(es6)基础知识整理(更新中...)
  11. 关于Java html table表格转excel
  12. MySQL KEY分区
  13. 更改Windows OEM信息
  14. Java程序员每天的工作都是做什么的?
  15. CGAL 计算几何库
  16. 圣诞Party将至!来来来,露一手用Python 抽奖
  17. 关于AWB的肤色问题
  18. 2017-12-12
  19. Ubuntu 14.04刷机时报错_BROM ERROR : S_UNDEFINED_ERROR (1001)
  20. 总结Python设置Excel单元格样式的一切,比官方文档还详细

热门文章

  1. C语言算法实现选择排序
  2. 小程序自定义组件Component(父子组件相互传值)
  3. mysql 全文模糊查找 便捷解决方案
  4. 游戏业务——多日签到功能设计
  5. Python之psutil库的使用
  6. JDX-1100 DC220V\\DC220V静态信号继电器
  7. 用xml充当小型数据库案例
  8. react中状态提升是什么意思
  9. 绿叶制药与华昊中天就抗肿瘤创新药优替帝达成合作;邦耀生物与易迪希达成合作 | 医药健闻...
  10. 大学生做什么副业好?大学生可以做哪些副业?