tplink安防监控raw文件转码合成mp4的方法
Tplink(深圳普联)专业的网络设备生产商,属于安防监控市场的后来者。Tplink的安防产品恢复了很多,其嵌入式文件系统也一直迭代更新。今天要说的案例比较特殊,其不仅仅要求恢复,还要求能解析出音频并且要求画面和声音实现“同步”。我们来看看这个特殊的恢复案例:
故障存储:
TOSHIBA DT02ABA400VKQ0H0R
故障现象:
这台TPLINK录像机做过初始化操作,客户需要指定时间段的视频,经过使用CHS零壹视频恢复程序监控版扫描,已经成功保存了数据。但是由于情况特殊涉及到取证问题,客户提出两个要求:
- 能否恢复音频
- 能否保证画面和声音的“同步”
客户提出这两个要求,是因为其查看设备时发现,通过手机APP可以下载扩展名为mp4的文件,播放时画面和声音都有的。这说明摄像头具备音频采集功能且录像机也具备音频流接收的功能,基于此,硬件上采集音频的条件是满足的。
故障分析:
从恢复角度来讲CHS零壹视频恢复程序监控版已经很好的履行了自己的职责:“在被初始化的大容量存储设备上找到指定时间的视频文件”。客户的两个请求实则已经超出了数据恢复的范畴,因为这个涉及到的是把RAW视频和音频数据进行转码和打包成mp4文件。由于各个厂商的转码/打包都属于内部算法涉及到商业机密,在早期除了大华和海康提供了转换的工具(某段时间甚至开放过API),但是随着竞争的激烈,这些都统统不存在了。之后做为头部厂商的海康、大华、天地伟业开发了各自的RAW播放器,这种播放器可以直接解码RAW视频和音频,这样就实现了“画面”和“声音”的同步,但是让人遗憾的是除了头部厂商之外其它安防厂商并不提供RAW播放器,这个名单包含tplink!
想要实现“画面”和“声音”的同步,从现有的恢复、修复视频、音频经验能得出结论:
- RAW视频编码(这里是265)需要转码成HEVC编码,这两种编码虽然本质上相同,但分属两个不同组织制定,为了符合相应的规范是很有必要转码的。
- RAW音频编码,这个分为两种一种是压缩编码(如aac),一种是高清编码(如sowt)。同样为了符合相应的规范是很有必要转码的。
- 同步问题,所谓的同步,是在解码器解码时在解一帧画面时同时解码一帧或多帧音频。也就是说同一个mp4文件中至少有两个轨道,即视频和音频轨道,这两个轨道是底层轨道,最终需要汇集到一个逻辑轨道,保证同步效果。
当然这个又涉及到不同速率调整,以及对PCR时间的转换,MP4中有DTS和PTS两个时间概念也是需要考虑的。
- 需要对mp4/mov/3GP等qt类视频文件结构极其熟悉才可以做到心中有底,很多人可能对mp4文件有误解,认为mp4是一类视频格式,实际上mp4仅仅是一个容器而已,因为mp4可以把不同的视频和音频编码打包到一个文件,就像一个瓶子一样,至于瓶子中放什么东西,mp4并不关注,只要符合它要求的就是合法的(比如瓶子里灌装按卫生标准去生产的饮料就可以上市销售),合法的编码就可以得到播放器(比如基于ffmpeg的播放器或者编辑软件)的解码,所以我们要做的就是努力去把所有一切做到符合mp4规范。
上边罗列这么多条足以说明转码和打包的难度之大,所以前期我们曾经建议客户和厂商联系来获取相应的技术支持,但是很遗憾厂商不提供这样的服务。经过客户不断和我们沟通,做为数据恢复从业者深感责任重大,本着遇到困难至少应该尝试着去解决的原则,我们接下了这个烫手的山芋。
故障处理:
通过客户传来的mp4文件确定了转码后的视频编码为HVC1,音频则为A-law(一种准高清PCM类编码)。
图1:mp4文件的音视频编码
STEP1:先把指定时间段的视频文件定位到并保存,做好转换的准备。
STEP2:编写一个“CHS安防监控MP4合成程序TPLINK版”的程序,主要处理如下问题:
- 通过一个好的mp4样本文件得到相应的参数信息
- 把安防RAW音视频转换成对应的HVC1和PCM,需要分离RAW音频和视频块,然后再转码
- 最后合成mp4文件
程序以文件为单位进行一个个转换和合成的操作(如图2)。
图2:CHS安防监控MP4合成程序TPLINK版 合成程序
STEP3:查看合成文件,可以看到文件的音频和视频编码都已经转码成功,至此转码/合成工作完成,总共6条视频,合成后达到画面和声音同步的完美效果,最后和客户核对数据,其对结果极其满意。
图3:共计转码/合成6条MP4视频
图4:合成MP4文件的视频编码
图5:合成MP4文件的音频编码
在完成了转码/合成工作后,思考一个问题“是否所有的安防监控产品都可以如何这般处理?”,这个问题至少理论上是可行的。实际上操作起来可能难度大一些,就以TPLINK为例,型号不同可能厂家用的转码/合成方案会有差异,所以不具备通用性,但是可以模块化处理,比如TPLINK的做成不同的型号对应相应的转码/合成模块,当然这个工作量就相当大了。
这就是tplink安防视频raw音视频转码合并mp4的方法,大家在遇到此类问题时,可以和我们联系!
相关文章:

tplink安防监控raw文件转码合成mp4的方法
Tplink(深圳普联)专业的网络设备生产商,属于安防监控市场的后来者。Tplink的安防产品恢复了很多,其嵌入式文件系统也一直迭代更新。今天要说的案例比较特殊,其不仅仅要求恢复,还要求能解析出音频并且要求画面和声音实现“同步”。…...
每天一个数据分析题(三百八十三)- 聚类
关于忽略自相关可以带来什么问题描述错误的是? A. 均方误差可能严重低估误差项的方差 B. 可能导致高估检验统计量t值,致使本不显著的变量变得显著了 C. 参数估计值的最小方差无偏性不再成立 D. 参数估计值的最小方差无偏性仍成立 数据分析认证考试介…...

构建下一代数据解决方案:SingleStore、MinIO 和现代 Datalake 堆栈
SingleStore 是专为数据密集型工作负载而设计的云原生数据库。它是一个分布式关系 SQL 数据库管理系统,支持 ANSI SQL,并因其在数据引入、事务处理和查询处理方面的速度而受到认可。SingleStore 可以存储关系、JSON、图形和时间序列数据,以满…...

【经验分享】Ubuntu24.04安装微信
【经验分享】Ubuntu24.04安装微信(linux官方2024universal版) 文章如下,22.04和24.04微信兼容 【经验分享】Ubuntu22.04安装微信(linux官方2024universal版) 实测Ubuntu24.04LTS版本可以兼容。...

AXI学习笔记
文章目录 AXI口诀:AXI三种总线,三种接口,一个协议背景知识一、 AMBA:二、AXI2.1 通信协议与握手机制2.2 AXI协议特点2.3 三种AXI总线类型(AXI4、AXI4-lite、AXI4-stream)2.3.1 AXI通道(5通道&am…...

Spring boot 启动报:Do not use @ for indentation
一、使用maven插件动态切换配置时出现报错 二、配置文件及pom 2.1 配置文件结构 2.2 application.yml spring: # 根据环境读取配置文件(手动) # profiles: # active: dev# 根据环境读取配置文件(通过勾选maven插件)profiles…...

【数据结构】排序(下)
个人主页~ 排序(上) 栈和队列 排序 二、常见排序的实现8、快速排序的优化9、非递归快速排序(1)基本思想(2)代码实现(3)时间复杂度(4)空间复杂度 10、归并排序…...

基于Java+Swing贪吃蛇小游戏(含课程报告)
博主介绍: 大家好,本人精通Java、Python、C#、C、C编程语言,同时也熟练掌握微信小程序、Php和Android等技术,能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验,能够为学生提供各类…...

三角形法恢复空间点深度
三角形法恢复空间点深度 如下图,以图 I 1 I_1 I1为参考,图 I 2 I_2 I2的变换矩阵为 T T T。相机光心为 O 1 O_1 O1和 O 2 O_2 O2。在图 I 1 I_1 I1中有特征点 p 1 p_1 p1,对应图 I 2 I_2 I2中有特征点 p 2 p_2 p2。理论上直…...

Linux 阻塞和非阻塞 IO 实验学习
Linux 阻塞和非阻塞 IO 实验学习 IO 指的是 Input/Output,也就是输入/输出,是应用程序对驱动设备的输入/输出操作。当应用程序对设备驱动进行操作的时候,如果不能获取到设备资源,那么阻塞式 IO 就会将应用程序对应的线程挂起&…...

JuiceFS 社区版 v1.2 发布,新增企业级权限管理、平滑升级功能
JuiceFS 社区版 v1.2 今天正式发布,这是自 2021 年开源以来的第三个大版本。v1.2 也是一个长期支持版本(LTS)。我们将持续维护 v1.2 以及 v1.1 这两个版本,v1.0 将停止更新。 JuiceFS 是为云环境设计的分布式文件系统,…...

虚拟3D沉浸式展会编辑平台降低了线上办展的门槛
在数字化浪潮的引领下,VR虚拟网上展会正逐渐成为企业展示品牌实力、吸引潜在客户的首选平台。我们与广交会携手走过三年多的时光,凭借优质的服务和丰富的经验,赢得了客户的广泛赞誉。 面对传统展会活动繁多、企业运营繁忙的挑战,许…...

泛微E9开发 查询页面添加按钮,完成特定功能
查询页面添加按钮,完成特定功能 1、关联知识(查询页面实现新增按钮)2、功能实现2.1. 点击按钮,输出选中的checkbox的值2.2. 点击按钮,打开一个自定义对话框 3、实现方法 1、关联知识(查询页面实现新增按钮&…...

初学51单片机之数字秒表
不同数据类型间的相互转换 在C语言中,不同数据类型之间是可以混合运算的。当表达式中的数据类型不一致时,首先转换为同一类型,然后再进行计算。C语言有两种方式实现类型转换。一是自动类型转换,另外一种是强制类型转换。 转换的主…...

SpringBoot整合justauth实现多种方式的第三方登陆
目录 0.准备工作 1.引入依赖 2.yml文件 3. Controller代码 4.效果 参考 0.准备工作 你需要获取三方登陆的client-id和client-secret 以github为例 申请地址:Sign in to GitHub GitHub 1.引入依赖 <?xml version"1.0" encoding"UTF-8&quo…...

【Java算法】滑动窗口
🔥个人主页: 中草药 🔥专栏:【算法工作坊】算法实战揭秘 👖一. 长度最小的子数组 题目链接:209.长度最小的子数组 算法原理 滑动窗口 滑动窗口算法常用于处理数组/字符串等序列问题,通过定义一…...
C# —— 属性和字段
属性和字段的区别 1.都是定义在一个类中,属于类成员变量 2.字段一般都是私有的private,属性一般是公开的Public 3.字段以小驼峰命名方式 age,属性一般是以大驼峰命名 Age 4.字段可以存储数据,属性不能存储数据,通过属性…...

【计算机视觉】人脸算法之图像处理基础知识(四)
图像的几何变换 图像的几何变换是指在不改变图像内容的前提下对图像的像素进行空间几何变换。主要包括图像的平移变换、镜像变换、缩放和旋转等。 1.插值算法 插值通常用来放缩图像大小,在图像处理中常见的插值算法有最邻近插值法、双线性插值法、二次立方、三次…...
探索 Spring Boot 集成缓存功能的最佳实践
在线工具站 推荐一个程序员在线工具站:程序员常用工具(http://cxytools.com),有时间戳、JSON格式化、文本对比、HASH生成、UUID生成等常用工具,效率加倍嘎嘎好用。 程序员资料站 推荐一个程序员编程资料站:…...

微信小程序使用方法
一.在网页注册小程序账号(在未注册的情况下) 1.如果你还没有微信公众平台的账号,请先进入微信公众平台首页,点击 “立即注册” 按钮进行注册。我们选择 “小程序” 即可。 接着填写账号信息,需要注意的是,…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
IGP(Interior Gateway Protocol,内部网关协议)
IGP(Interior Gateway Protocol,内部网关协议) 是一种用于在一个自治系统(AS)内部传递路由信息的路由协议,主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...
工程地质软件市场:发展现状、趋势与策略建议
一、引言 在工程建设领域,准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具,正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

初学 pytest 记录
安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...

网站指纹识别
网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...

Axure 下拉框联动
实现选省、选完省之后选对应省份下的市区...

AD学习(3)
1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分: (1)PCB焊盘:表层的铜 ,top层的铜 (2)管脚序号:用来关联原理图中的管脚的序号,原理图的序号需要和PCB封装一一…...

Linux-进程间的通信
1、IPC: Inter Process Communication(进程间通信): 由于每个进程在操作系统中有独立的地址空间,它们不能像线程那样直接访问彼此的内存,所以必须通过某种方式进行通信。 常见的 IPC 方式包括&#…...

中科院1区顶刊|IF14+:多组学MR联合单细胞时空分析,锁定心血管代谢疾病的免疫治疗新靶点
中科院1区顶刊|IF14:多组学MR联合单细胞时空分析,锁定心血管代谢疾病的免疫治疗新靶点 当下,免疫与代谢性疾病的关联研究已成为生命科学领域的前沿热点。随着研究的深入,我们愈发清晰地认识到免疫系统与代谢系统之间存在着极为复…...