音视频研发分享:关键帧截图+wasm快照--我又做了一件有益于社会的事情

音视频研发分享:关键帧截图+wasm快照--我又做了一件有益于社会的事情

  • 简单的一个视频设备快照功能到底有多费事多费电?
    • 新的方法
      • 有方法!
    • 省了多少电?

简单的一个视频设备快照功能到底有多费事多费电?

以前,我做多路视频设备接入的时候,为了能更好地展示设备当前的画面状态,我们经常是每隔3分钟、5分钟去设备取一次视频流,不管是GB28181设备通过SIP调阅,还是RTSP设备通过拉流调阅,亦或是SDK设备取流的过程,都是先取流,然后呢,通过像播放视频一样的过程,调用ffmpeg、avfilter、avcodec,从视频流中截取一张jpg图,保存在视频服务的目录里面,然后再以接口的形式发布给客户端,例如:
传统快照模式

这些图,都是平台费劲地从设备取过来的,然后就为了这么展示一下,废了多事?GB28181-》PS-》ES-》ffmpeg-》JPG,实际这些图片的展示率有多少?
可能一晚上机器都在不停的取流-》解码-》转码成图片,但是一晚上都没有一个人在看的,浪费了多少电?

新的方法

有什么方法可以解决这些浪费资源的事情呢?我们拆解了一下这个事情:

  1. 取流过程大多数情况下需要设备协议支持,比如让设备推送一个快照过来、比如让GB28181设备发一个关键帧过来,但是这个不通用,所以,还是得走老路,直接通过各种协议把流取过来;
  2. 数据流取过来之后,就是各种解封装,直到解成ES,这一步资源消耗很少,无所谓;
  3. 耗费资源的来了,ES-》JPG这个过程涉及了一次解码和一次编码,整个过程可以说是仅次于GPU视频分析的资源消耗,我们能不能把这部分省去?

有方法!

我们可以这样,我整个快照过程ES取流就到此为止,我们只需要根据需求,取到ES的IDR帧数据,然后将整个"sps+pps+I"存储下来,当做一个raw的快照保存就可以了,raw帧数据放到前端Web Assembly去解码,有人看就解码,没人看就不解码,这样就能省去很多事情

wasm前端解码
wasm快照解码
用视频分析工具看这就是一帧

省了多少电?

  1. 服务器不用再无时无刻解码、转图片了;
  2. 编码逻辑更简单了,关键帧就可以当图用,不要再费开发时间转图片;
  3. 充分利用客户端前端资源,看的时候解码一下RAW数据,比如1000路设备接入,快照间隔是5分钟(300s),也就是常规情况下,机器每秒要快照3张图片,而且是没日没夜的运行,现在不需要了,周末没人看视频,就不会产生任何编解码消耗!
    前端解码
    如果大家都采用这种方式,我们每年会给整个社会省多少电费?所以,做程序开发也是一个可以为社会做贡献的事情!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/63345.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C# 基础精讲】构造函数和析构函数

构造函数(Constructor)和析构函数(Destructor)是面向对象编程中的两个重要概念,它们分别用于在对象创建和销毁的时候执行特定的操作。这两个函数在C#以及其他面向对象编程语言中都具有重要的作用,用于初始化…

Ajax-AJAX请求的不同发送方式

🥔:你一定能成为想要成为的人 发送AJAX请求不同方式 发送AJAX请求不同方式1、jQuery发送AJAX请求2、axios发送AJAX请求(重点)3、fetch发送AJAX请求 发送AJAX请求不同方式 1、jQuery发送AJAX请求 首先需要jquery的js文件&#xf…

28岁,从字节退休了···

大厂一直是每个程序员都向往职业目标,大厂意味着薪资高、福利好、倍有面儿,而且发展空间也大。甚至有人调侃不想进大厂的程序员不是好程序员。 而在网上,也有各个网友分享自己在大厂的经历,在某平台还有一个近2600万浏览的话题&a…

从零开始学python(十六)爬虫集群部署

前言 今天讲述Python框架源码专题最后一个部分,爬虫集群部署,前面更新了十五个从零开始学python的系列文章,分别是: 1.编程语法必修篇 2.网络编程篇 3.多线程/多进程/协程篇 4.MySQL数据库篇 5.Redis数据库篇 6.MongoDB数据库篇 …

Unity游戏源码分享-精品即时战略游戏_官网60美刀素材

Unity游戏源码分享-精品即时战略游戏_官网60美刀素材 下载地址:https://download.csdn.net/download/Highning0007/88204017

创建MySQL数据库和创建表的详细步骤(navicat)

目录 一、介绍 二、操作步骤 (一)新建连接 (二)新建数据库 (三)新建表 插入数据测试 对字段进行增加或者修改 三、关于MySQL的其他文章(额外篇) 一、介绍 在创建数据库…

正则表达式试炼

我希望在这里列出我很多想写的正则表达式,很多我想写,但是不知道怎么写的。分享点滴案例。未来这个文章会越来越长 案例 我有这样的一批文字,我需要删掉Mozilla/5.0前面的所有内容,如果可以用正则表达式批量匹配到,删…

并发编程--------JUC集合

并发集合 一、ConcurrentHashMap 1.1 存储结构 ConcurrentHashMap是线程安全的HashMap ConcurrentHashMap在JDK1.8中是以CASsynchronized实现的线程安全 CAS:在没有hash冲突时(Node要放在数组上时) synchronized:在出现hash…

利用Torchmetrics库快速进行Torch的评价指标计算(推荐)

目录 1、安装 2、基本流程介绍 3、MetricCollection 4、自定义指标 5、我们可以调用多个指标计算不同的任务 6、可以是标签,也可以是one_hot编码 7、常用分类指标计算 8、异常报错 1、安装 官网地址:Welcome to TorchMetrics — PyTorch-Metrics 1.0.1 documenta…

榜单!全年或超150万辆!行泊一体系统方案供应商TOP10出炉

作为域控集中架构下的产物,智能驾驶赛道的行泊一体方案正在成为市场的主流配置,同时,各类计算(芯片)方案也都在发力这个细分赛道。 高工智能汽车研究院认为,和NOA不同,作为高低速组合功能的行泊…

MySQL目录结构与源码

目录 1.1 主要的目录结构 1.2 MySQL源码获取 1.1 主要的目录结构 MySQL的目录结构说明bin目录所有MySQL的可执行文件。如:mysql.exeMySQLInstanceConfig.exe数据库的配置向导,在安装时出现的内容data目录系统数据库所在的目录my.ini文件MySQL的主要配置…

Java项目作业~ 通过html+Servlet+MyBatis,完成站点信息的添加功能

需求: 通过htmlServletMyBatis,完成站点信息的添加功能。 以下是站点表的建表语句: CREATE TABLE websites (id int(11) NOT NULL AUTO_INCREMENT,name char(20) NOT NULL DEFAULT COMMENT 站点名称,url varchar(255) NOT NULL DEFAULT ,…