1.视频播放存在的问题
前提介绍:首先是需要是需要把摄像机的视频接到我们的平台上,目前存在两种方式,一种是需要客户端去实现,一种是在服务器端实现,都是基于ffmpeg去做的
客户端实现,由于客户端有无数个,每一个客户端都去看同一个摄像机视频的时候,摄像机的压力是很大的
    1.客户端实现方式,是使用代码调用nodeJS,搭建起来一个本地的容器,当界面打开视频播放查看摄像机实时视频的时候,客户端起一个websocket服务使用ffmpeg去切视频的截图,发送给前端,让前端是渲染,推送频率大致是1s/15次,这个时候用户看起来也是一个流畅的视频,当前方案存在的问题:当同时播放少量摄像机视频的时候浏览器渲染是没有问题的,但是当同时查看9路摄像机的时候,浏览器渲染会出现性能问题,出现视频卡顿的场景
    2.客户端推送视频片段,常用的方案是生成m3u8的视频描述文件和ts视频片段.当前方案存在的问题在点击播放视频的时候,m3u8文件是在第一个视频切片生成之后才有的,比如规定视频切片的时间为10s/1次,因此在刚打开视频到打开后10s的时间段内视频是无法播放的
服务器端实现,每一个摄像机只会去拉取一次,摄像机压力比较小,存在的问题,在项目去做分布式或容灾的时候,这部分功能会出现问题
    该方案是笔者最终采用的方案,因此会详细介绍
    首先该方案的实现方式是编写脚本,在后台去拉每一个摄像机的视频,然后只存储每个摄像机最新100s的视频,在用户去查看摄像机视频的时候,用nginx去映射切出来的视频文件,
    第一步:和前台规定在获取视频静态资源的时候使用带有固定标识的url,笔者规定使用的是ip/hls/摄像机id.m3u8
    第二步: nginx配置
    nginx.conf
    
    mime.types
    
第三步:脚本编写(红色部分请填写摄像机的标准trsp流信息,真实设备,因此划掉)


在启动该脚本的时候:nohup sh cameraStart.sh > /dev/null 2>&1 请不要输出日志文件,因为该进程在后台不停的跑日志文件在不停的增大

存在的问题:前台使用src打开m3u8文件,视频播放过之后不会主动清理历史的ts文件,在视频播放2h的时候,浏览器会挂掉,重新刷新之后则恢复正常,待优化

备注:曾经的实现想法是在用户想要看的时候再去切2s的视频,前台延迟两秒之后在去访问资源文件,在后台记录查看每一个用户的信息,当没有用户看的时候再去关闭掉该进程
    1.在java代码执行ffmpeg命令的时候 返回Proress对象是不支持序列化的,因此只能保存到类的成员变量中,当服务器重启的时候,成员变量没了,但是进程还在,重启操作太过于麻烦(本来计划是保存在redis中)
    2.当使用java代码去执行的ffmpeg命令的时候,视频播放几分钟之后就停止了,定位发现后台ffmpeg进程不再切实时视频了

定位结果(个人分析,带有自己猜测的东西,可能会存在问题)由于java的System是单例的,在执行commend之后,该进程就结束了,但是使用java代码启动的进程还会去上报信息(手动执行脚本,打印在控制台的文本信息),保存到Process的缓冲区中,当缓冲区满了,ffmpeg的进程也就不在切视频了
    表现的现象为:m3u8文件中EXT-X-MEDIA-SEQUENCE字段不再增加

ffmpeg视频切片方案相关推荐

  1. php-ffmpeg切片,ffmpeg视频切片

    m3u8转MP4 ffmpeg -i http://vn.xcar.com.cn/xtv/qiniu/video/converted/m3u8/2019/10/25/m3u8_o_1do0gva3uq ...

  2. 记录:ffmpeg视频切片

    简介 关于视频切片及播放,在这里简单做一个记录. 环境及安装包 服务器:CentOS 版本:CentOS Linux release 7.5.1804 (Core) FFMpeg资源包:ffmpeg- ...

  3. php七牛分片上传_七牛视频切片方案 - 张小超fly的个人空间 - OSCHINA - 中文开源技术交流社区...

    使用七牛 sdk 上传视频并做分片操作. step1 生成 token const qiniu = require("qiniu"); var accessKey = proc.e ...

  4. 使用ffmpeg视频切片并加密

    想达到的目的:将一个mp4视频文件切割为多个ts片段,并在切割过程中对每一个片段使用 AES-128 加密,最后生成一个m3u8的视频索引文件: 电脑环境 Fedora,已经安装了最新的ffmpeg: ...

  5. java视频切片_使用ffmpeg视频切片并加密和视频AES-128加密后播放

    创建加密文件:将一个mp4视频文件切割为多个ts片段,并在切割过程中对每一个片段使用AES-128 加密,最后生成一个m3u8的视频索引文件: 1.加密用的key(文件则保存当前目录) 指令:open ...

  6. 使用ffmpeg视频切片并加密和视频AES-128加密后播放

    创建加密文件:将一个mp4视频文件切割为多个ts片段,并在切割过程中对每一个片段使用AES-128 加密,最后生成一个m3u8的视频索引文件: 1.加密用的key(文件则保存当前目录) 指令:open ...

  7. 用FFmpeg搭建基于CNN的视频分析方案

    Photo by Lukas from Pexels FFmpeg作为一个集录制.转换.音/视频编码解码功能为一体的开源框架,自然也需要考虑怎样去和当下流行的视频分析技术融合.本文来自英特尔网络平台部 ...

  8. LiveVideoStack线上分享第五季(五):用FFmpeg搭建基于CNN的视频分析方案

    基于卷积神经网络(CNN)的视频分析在日常生活中应用地越来越广泛,也对软件开发人员提出了更多的挑战.FFmpeg作为一个集录制.转换.音/视频编码解码功能为一体的开源框架,自然也需要考虑怎样去和当下流 ...

  9. FFMPEG将视频切片成ts文件并对ts文件进行ASE加密,并合并成M3U8操作方法

    环境:centos7 开发语言:php 框架:视频转码服务系统 生成ASE加密文件需要用到的命令: #!/bin/sh BASE_URL=${1:-'.'} openssl rand 16 > ...

  10. 【FFmpeg性能测试】Linux Centos 4核8G使用FFmpeg配置视频切片,转码性能实测及教程

    测前说明 随着媒体流的技术增长,m3u8在直播和点播行业成为主流,但因视频资源都是整体文件,需要自行或使用高额的第三方切片,所以在这里为大家测试一下入门级服务器的切片和转码性能,供大家参考和学习到底是 ...

最新文章

  1. 获取request的变量
  2. TCP/IP详解 笔记八
  3. 一招修复内存不能read_read文件一个字节实际会发生多大的磁盘IO?
  4. k8s容器探针:就绪检测、存活检测
  5. 关于多网络时钟的讨论
  6. php pdo输出数据库,PHP中PDO对像及PDOStatement::fetch()的用法数据库查询,结果输出处理...
  7. gem for onenote安装教程
  8. pythonsqlite事务_python sqlite3 的事务控制
  9. SFTP环境搭建及客户代码调用公共方法封装
  10. C++基础与深度解析第六章:函数
  11. Reactive Extensions入门(6):使用Rx进行单元测试
  12. 已知后序与中序输出前序(先序)
  13. Luogu3613 睡觉困难综合征
  14. 计算机随机试题是这么随机的,用 Excel 生成随机抽题的考试试卷
  15. 利用ace.js编写一个JavaScript编辑器(带智能补全)
  16. 输入法变成繁体后改回简体中文
  17. 大学毕业生推荐表的计算机水平,大学毕业生就业推荐表学校鉴定评语
  18. 苹果手机应用分身_云手机应用多开app推荐 好用的多开分身软件
  19. docker run 的 -i -t -d参数
  20. Grain Timers and Reminders

热门文章

  1. 用户sa登录失败的解决办法
  2. java证明角谷猜想_Java程序(角谷猜想,applet) -
  3. 轻重在平衡:平衡查找树的强大威力
  4. 详解Provisional headers are shown
  5. 位移的单位符号_初中物理符号级单位符号公式大全
  6. mysql三范式通俗_三范式(数据库三大范式通俗理解)
  7. 2014年全国高等学校名单
  8. 我Linux桌面上的卡通MM真的很像ZPR吗?
  9. 学习《恋上数据结构与算法》目录索引 (持续更新中)
  10. 没有你不会的CAD?CAD知识整理下集