杂牌记录仪TS视频流恢复方法

大多数的记录仪都采用了MP4/MOV文件方案,极少数的可能在用AVI文件,极极少数的在用TS文件方案。很多人可能不太解TS文件,这是一种古老的视频文件结构,下边这个案例我们来看下TS视频文件的恢复方法。

故障存储:8G存储卡/fat32文件系统

故障现象:

客户无法提供数据丢失的原因,只要求恢复指定时间2023-05-15  12:00-15:00之间的视频文件。

故障分析:

8G的卡不算大,WINHEX解析后可以看到删除空间尚有4.7G。

图1:卡的空间使用率

从客户提供的信息,卡中为MP4文件,但是WINHEX对比发现,所谓的MP4文件只是伪装了的TS而已。从下图中一个删除的.TS文件就能看出端倪,基本上能判断出记录仪管理程序的文件生成流程:

  1. 采集信息数字化->2、文件以TS流规范进行格式化写入->3、生成文件名改扩展名为mp4(估计第2步使用了TS某种通用打包方案默认扩展名为.TS)

之所以为什么要改.ts为.mp4,猜测大概率是为了保证兼容性,比如有些播放器虽然支持ts解码但是却过滤了.ts。

有必要科普下TS流,这是一位古董级的视频格式,已经可以跻身博物馆的那种!

transport stream(传送流)简称TS流,其设计初衷是为了服务于数字电视机顶盒,在那个刚普及数字电视的时代,设计理念是小块传输(为了应对可怜的带宽)、终端校验(有问题直接丢包不影响下一个包的解析),在这些理念加持下,TS流变成了一个固定长度,切割视频、音频数据分片传输的结构。这种结构和现在主流的MP4有很大的差异,但是却很好的满足了“窄带”下的数字信息的传输要求。所以在一段时间内日系不少厂商主推此格式,在TS流的基础上衍生了MTS、MPEG、M2T等文件,不过随着网络的发展,TS流最终是昙花一现,现在主流的视频格式中已经“难觅芳踪”,虽然TS背靠ITU。坐了冷板凳的TS流,印证了那句话”时代在抛弃你的时候连个招呼也不会打“!

图2:TS流“伪装”成MP4文件

故障处理:

TS流由于使用小块固定长度、不记录时间信息、冗余较大等各种原因,导致碎片定位和重组时的问题很多,碎片定位时容易误判断,因为其固定长的原因。而在重组时也不好判断上下碎片的从属关系,种种特征导致TS流想要用程序去定位和重组的话难度较大,经常会出现窜帧的问题,这些问题的解决更多的还是靠经验判断,所以目前CHS使用的是程序定位+手工重组的恢复方案。

使用”TS流解析工具”做为辅助,以簇为单位定位TS流,如下图:

图3:TS流辅助小程序

辅助程序只能定位,重组还得靠经验判断再选择碎片进行合成,这个过程比较消耗时间,经过一天多的处理,成功的恢复了客户需要的指定时间的数据。

这就是杂牌记录仪TS的恢复方法,大家在遇到此类问题时,可以和我们联系!

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

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

相关文章

2-1RT-Thread线程管理-笔记

2-1RT-Thread线程管理-笔记 其中系统线程由内核创建,如main函数和空闲线程都属于系统线程,而用户线程是由应用程序所创建的。 对于资源较大的MCU可以适当设计较大的线程栈,也可以在初始化时设置一个具体的数值,如1K或2K字节。…

索引 ---- mysql

目录 1. 索引 1.1 概念 1.2 作用 1.3 使用场景 1.4 使用 1.4.1查看索引 1.4.2 创建索引 1.4.3 删除索引 1.5 注意事项 1.6 索引底层的数据结构 (面试经典问题) 1. 索引 1.1 概念 索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的…

11.3 指针和函数

11.3 指针和函数 本节必须掌握的知识点: 指针作为函数的参数 数组作为函数的参数 指针作为函数的返回值 在C语言中,指针的一个重要作用就是作为函数参数使用,本节将介绍这一重要作用。 11.3.1 指针作为函数的参数 实验一百一十三&#xff…

电磁兼容(EMC):BUCK变换器基本原理及传导辐射分析设计

目录 1. BUCK电路拓扑及原理 2. Buck拓扑电路电磁场分析 3.总结 开关电源替代线性电源,解决了效率和体积问题,但也带来了新的EMI问题。开关电源也是产品内部的强辐射源之一,基于透过现象看本质,将复杂问题简单化,本…

T检验——单样本t检验/两独立样本t检验/配对样本t检验

T检验——单样本t检验/两独立样本t检验/配对样本t检验 1.单样本t检验1.1 适用范围 2. ( 独立样本t检验)两独立样本t检验3.ANOVA多组样本显著性检验(2组以上)4. 配对样本T检验 1.单样本t检验 1.1 适用范围 单样本t检验:即已知样本…

成功解决“IndexError: deque index out of range”错误的全面指南

成功解决“IndexError: deque index out collections.deque out of range”错误的全面指南 引言 在Python编程中,collections.deque 是一个双端队列(double-ended queue),支持从两端快速添加和删除元素。然而,与列表&…

Linux网络-守护进程版字典翻译服务器

文章目录 前言一、pid_t setsid(void);二、守护进程翻译字典服务器(守护线程版)效果图 前言 根据上章所讲的后台进程组和session会话,我们知道如果可以将一个进程放入一个独立的session,可以一定程度上守护该进程。 一、pid_t se…

mysql(数据库)可视化工具——Navicat Premium

Navicat Premium是一款功能强大的数据库管理工具,它支持多种数据库管理系统,包括MySQL、MariaDB、SQL Server、SQLite、Oracle和PostgreSQL等。Navicat Premium提供了直观的用户界面,使用户能够轻松地管理数据库结构、执行复杂的SQL查询、导入…

CUDA Unity Compute Shader 3

计划 这应该是第3章的读书笔记,但是因为第3章读起来比较困难,所以先看了《CUDA并行程序设计编程指南》的第5章和第6章,感觉读起来顺畅多了,《CUDA并行程序设计编程指南》暂定精读第5、6、7章 1.如何生成ptx文件 属性->CUDA C/…

[QT] MAC使用Qt Creator运行程序如何仅运行一个进程?

大家刚开始使用QtCreator会发现每次run程序,都会出现一个程序进程,使得调试操作增加。如下,每次run都会出现一个demo14的进程。 如何每次run后,就关闭上一次的进程,而重新拉起新进程呢? 看这里 这是默认…

Redis-02

redis安装包位置 /opt/redis-7.2.5 redis默认安装路径: 配置文件路径:/usr/local/bin/redisconfig gcc安装位置 /opt/rhredis启动: 在/usr/local/bin目录下输入redis-server redisconfig/redis.confredis性能测试命令 redis-benchmark [opt…

【WEEK14】 【DAY5】Swagger第三部分【中文版】

2024.5.31 Friday 接上文【WEEK14】 【DAY4】Swagger第二部分【中文版】 目录 16.6.配置API分组16.6.1.修改SwaggerConfig.java16.6.2.重启 16.7.实体配置16.7.1.新建pojo文件夹16.7.2.修改HelloController.java16.7.3.重启 16.8.常用注解16.8.1.Swagger的所有注解定义在io.swa…

NIUSHOP多商户V6版预售背后的前端技术革新

随着电子商务的快速发展,多商户电商平台成为了市场上的热门选择。在这个背景下,NIUSHOP多商户V6版的预售活动引发了广泛关注。本文将从前端技术的角度,探讨NIUSHOP多商户V6版在预售背后所蕴含的技术革新和亮点。 一、引言 NIUSHOP多商户系统…

node.js点餐系统app-计算机毕业设计源码84406

摘 要 21世纪的今天,随着社会的不断发展与进步,人们对于信息科学化的认识,已由低层次向高层次发展,由原来的感性认识向理性认识提高,管理工作的重要性已逐渐被人们所认识,科学化的管理,使信息存…

php反序列化学习(3)

1、session 当session_start()被调用或者php.ini中session.auto_start为1时,php内部调用会话管理器,访问用户session被序列化后,存储到指定目录(默认为/tmp)。 漏洞产生:写入格式与读取格式不一致 处理器…

如何设置让背景颜色不包括 padding 部分,顺带全面学习 background-clip 属性(可以实现文字渐变)

先解决需求 实现背景颜色不包括 padding 部分,直接给容器添加 css 属性:background-clip:content-box; 示例代码: .content-box-example {background-color: lightblue;padding: 20px;border: 1px solid black;background-clip: content-bo…

06C内存分配

C零碎语法 目录 文章目录 C零碎语法1.内存布局2. 内存对齐2.1结构体内存对齐2.1应用 1.内存布局 2. 内存对齐 2.1结构体内存对齐 三条原则: (1)结构体变量的 起始地址能够被其最宽的成员大小整除。 (2)结构体每个…

前端Vue自定义滚动卡片组件设计与实现

摘要 随着技术的日新月异,前端开发的复杂度不断提升。传统的整块应用开发方式在面对小的改动或功能增加时,常常需要修改大量的整体逻辑,造成开发效率低下和维护成本高昂。为了应对这一挑战,组件化开发应运而生。本文将以Vue框架下…

Vue3项目练习详细步骤(第二部分:主页面搭建)

主页面搭建 页面主体结构 路由 子路由 主页面搭建 页面主体结构 在vuews目录下新建Layout.vue文件 主页面内容主体代码 <script setup> import {Management,Promotion,UserFilled,User,Crop,EditPen,SwitchButton,CaretBottom } from element-plus/icons-vue imp…

YOLOv5改进(六)--引入YOLOv8中C2F模块

文章目录 1、前言2、C3模块和C2F模块2.1、C3模块2.2、BottleNeck模块2.3、C2F模块 3、C2F代码实现3.1、common.py3.2、yolo.py3.3、yolov5s_C2F.yaml 4、目标检测系列文章 1、前言 本文主要使用YOLOv8的C2F模块替换YOLOv5中的C3模块&#xff0c;经过实验测试&#xff0c;发现Y…