当前位置: 首页 > news >正文

杂牌记录仪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的恢复方法,大家在遇到此类问题时,可以和我们联系!

相关文章:

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

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

十_信号7-信号集

int sigemptyset(sigset_t *set); 清空信号集 int sigfillset(sigset_t *set); 填充满 信号集 int sigaddset(sigset_t *set, int signum); 向信号集中添加信号 int sigdelset(sigset_t *set, int signum); 从型号集中删除信号 int sigismember(const sigset_t *set, int s…...

GPT-4o

微软最新发布的CopilotPC采用了OpenAI最新的GPT-4o技术,新增了多项强大功能。以下是主要的新增功能: 更强大的AI处理能力:CopilotPC采用了专门用于AI处理的特殊芯片,使得电脑能够处理更多的人工智能任务,而无需调用云…...

32位与64位程序下函数调用的异同——计科学习中缺失的内容

前言 今天&#xff0c;通过一个有趣的案例&#xff0c;从反编译的角度看一下C语言中函数参数是如何传递的。 创建main.c文件&#xff0c;将下面实验代码拷贝到main.c文件中。 # main.c #include <stdio.h>int test(int a, int b, int c, int d, int e, int f, int g, …...

Python爬虫实战(实战篇)—16获取【百度热搜】数据—写入Ecel(附完整代码)

文章目录 专栏导读背景结果预览1、爬取页面分析2、通过返回数据发现适合利用lxmlxpath3、继续分析【小说榜、电影榜、电视剧榜、汽车榜、游戏榜】4、完整代码总结 专栏导读 &#x1f525;&#x1f525;本文已收录于《Python基础篇爬虫》 &#x1f251;&#x1f251;本专栏专门…...

js切割数组的两种方法slice(),splice()

slice() 返回一个索引和另一个索引之间的数据(不改变原数组),slice(start,end)有两个参数(start必需,end选填),都是索引,返回值不包括end 用法和截取字符串一样 splice() 用来添加或者删除数组的数据,只返回被删除的数据,类型为数组(改变原数组) var heroes["李白&q…...

【计算机毕设】基于SpringBoot的医院管理系统设计与实现 - 源码免费(私信领取)

免费领取源码 &#xff5c; 项目完整可运行 &#xff5c; v&#xff1a;chengn7890 诚招源码校园代理&#xff01; 1. 研究目的 本项目旨在设计并实现一个基于SpringBoot的医院管理系统&#xff0c;以提高医院管理效率&#xff0c;优化医疗服务流程&#xff0c;提升患者就诊体验…...

导线防碰撞警示灯:高压线路安全保障

导线防碰撞警示灯&#xff1a;高压线路安全保障 在广袤的大地上&#xff0c;高压线路如同血脉般纵横交错&#xff0c;然而&#xff0c;在这看似平静的电力输送背后&#xff0c;却隐藏着不容忽视的安全隐患。特别是在那些输电线路跨越道路、施工等区域的路段&#xff0c;线下超…...

【LeetCode 77. 组合】

1. 题目 2. 分析 本题有个难点在于如何保存深搜得到的结果&#xff1f;总结了一下&#xff0c;深搜处理的代码&#xff0c;关于返回值有三大类。 第一类&#xff1a;层层传递&#xff0c;将最深层的结果传上来&#xff1b;这类题有&#xff1a;【反转链表】 第二类&#xff1…...

element-ui组件table去除下方滚动条,实现鼠标左右拖拽移动表格

时隔多日&#xff0c;再次遇到值得记录的问题。 需求 项目前端使用vue框架&#xff0c;页面使用element-ui进行页面快速搭建。默认的table组件当表格过长时&#xff0c;下方会出现横向的滚动条&#xff0c;便于用户对表格进行左右滑动。考虑到页面美观问题&#xff0c;滚动条…...

【C++】list的使用(上)

&#x1f525;个人主页&#xff1a; Forcible Bug Maker &#x1f525;专栏&#xff1a; STL || C 目录 前言&#x1f308;关于list&#x1f525;默认成员函数构造函数&#xff08;constructor&#xff09;析构函数&#xff08;destructor&#xff09;赋值运算符重载 &#x1…...

【代码随想录训练营】【Day 37】【贪心-4】| Leetcode 840, 406, 452

【代码随想录训练营】【Day 37】【贪心-4】| Leetcode 840, 406, 452 需强化知识点 python list sort的高阶用法&#xff0c;两个key&#xff0c;另一种逆序写法python list insert的用法 题目 860. 柠檬水找零 思路&#xff1a;注意 20 块找零&#xff0c;可以找3张5块升…...

concat是什么?前端开发者必须掌握的数组拼接利器

concat是什么&#xff1f;前端开发者必须掌握的数组拼接利器 在前端开发中&#xff0c;concat是一个极其重要的概念&#xff0c;它能够帮助我们实现数组之间的无缝拼接。那么&#xff0c;concat到底是什么&#xff1f;为什么它在前端开发中如此重要&#xff1f;接下来&#xf…...

WHAT - 容器化系列(一)

这里写目录标题 一、什么是容器与虚拟机1.1 什么是容器1.2 容器的特点1.3 容器和虚拟机的区别虚拟机&#xff08;VM&#xff09;&#xff1a;基于硬件的资源隔离技术容器&#xff1a;基于操作系统的资源隔离技术对比总结应用场景 二、容器的实现原理1. Namespace&#xff08;命…...

QT7_视频知识点笔记_67_项目练习(页面以及对话框的切换,自定义数据类型,DB数据库类的自定义及使用)

视频项目&#xff1a;7----汽车销售管理系统&#xff08;登录&#xff0c;品牌车管理&#xff0c;新车入库&#xff0c;销售统计图表&#xff09;-----项目视频没有&#xff0c;代码也不全&#xff0c;更改项目练习&#xff1a;学生信息管理系统。 学生信息管理系统&#xff1…...

windows10系统64位安装delphiXE11.2完整教程

windows10系统64位安装delphiXE11.2完整教程 https://altd.embarcadero.com/download/radstudio/11.0/radstudio_11_106491a.iso XE11.1 https://altd.embarcadero.com/download/radstudio/11.0/RADStudio_11_2_10937a.iso XE11.2 关键使用文件在以下内容&#xff1a;windows10…...

09.责任链模式

09. 责任链模式 什么是责任链设计模式&#xff1f; 责任链设计模式&#xff08;Chain of Responsibility Pattern&#xff09;是一种行为设计模式&#xff0c;它允许将请求沿着处理者对象组成的链进行传递&#xff0c;直到有一个处理者对象能够处理该请求为止。这种模式的目的…...

Amazon云计算AWS(一)

目录 一、基础存储架构Dynamo&#xff08;一&#xff09;Dynamo概况&#xff08;二&#xff09;Dynamo架构的主要技术 二、弹性计算云EC2&#xff08;一&#xff09;EC2的基本架构&#xff08;二&#xff09;EC2的关键技术&#xff08;三&#xff09;EC2的安全及容错机制 提供的…...

十_信号4-SIGCHLD信号

SIGCHLD信号 在学习进程控制的时候&#xff0c;使用wait和waitpid系统调用何以回收僵尸进程&#xff0c;父进程可以阻塞等待&#xff0c;也可以非阻塞等待&#xff0c;采用轮询的方式不停查询子进程是否退出。 采用阻塞式等待&#xff0c;父进程就被阻塞了&#xff0c;什么都干…...

HCIP的学习(27)

RSTP—802.1W—快速生成树协议 STP缺陷&#xff1a; 1、收敛速度慢----STP的算法是一种被动的算法&#xff0c;依赖于计时器来进行状态变化 2、链路利用率低​ RSTP向下兼容STP协议。&#xff08;STP不兼容RSTP&#xff09; 改进点1—端口角色 802.1D协议---根端口、指定端口…...

算力运维迎革命! OpsAMAX 上线,AI 让服务器集群运维 “零门槛”

算力时代&#xff0c;大模型、生物医药、智能制造等领域的飞速发展&#xff0c;让 HPC、AI 服务器集群成为核心生产力。但算力越强、集群越复杂&#xff0c;运维难题就越突出&#xff1a;告警刷屏找不到故障根因、老专家经验没法传承、异构设备管不动、故障停机拖垮业务进度………...

如何快速上手Vue树形组件:新手完整教程

如何快速上手Vue树形组件&#xff1a;新手完整教程 【免费下载链接】vue-tree-list &#x1f332;A vue component for tree structure 项目地址: https://gitcode.com/gh_mirrors/vu/vue-tree-list 你是否正在寻找一个功能强大且易于使用的Vue树形组件&#xff1f;vue-…...

监区越界预警技术革命:基于纯视觉无感全域风控体系,重构智慧监所时空管控范式

监区越界预警技术革命&#xff1a;基于纯视觉无感全域风控体系&#xff0c;重构智慧监所时空管控范式当前国内智慧监所越界预警领域&#xff0c;传统管控方案高度依赖UWB超宽带单点定位技术&#xff0c;整体技术架构以硬件堆叠为核心&#xff0c;依托标签穿戴、单点锚定、局部电…...

核心主题:IT人如何通过系统性技能提升实现高效编码

核心主题&#xff1a;IT人如何通过系统性技能提升实现高效编码 技术能力维度 编程语言深度掌握&#xff08;如Python、Java等主流语言特性与底层原理&#xff09;算法与数据结构实战应用&#xff08;LeetCode高频题型与工程化落地&#xff09;设计模式与架构思维&#xff08;…...

NotebookLM落地失败真相:为什么83%团队卡在第2阶段?3个权威诊断指标立即自检

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;NotebookLM落地失败的核心归因诊断 NotebookLM 作为 Google 推出的面向文档理解的实验性 AI 工具&#xff0c;其本地化部署与企业级集成常遭遇系统性失效。深入分析表明&#xff0c;失败并非源于单一技术缺陷…...

终极指南:如何使用NifSkope轻松编辑游戏3D模型文件

终极指南&#xff1a;如何使用NifSkope轻松编辑游戏3D模型文件 【免费下载链接】nifskope A git repository for nifskope. 项目地址: https://gitcode.com/gh_mirrors/ni/nifskope NifSkope是一款专为游戏开发者设计的开源3D模型编辑器&#xff0c;专注于NetImmerse文件…...

5分钟快速上手:Parsec VDD虚拟显示器终极指南,解锁Windows显示新境界

5分钟快速上手&#xff1a;Parsec VDD虚拟显示器终极指南&#xff0c;解锁Windows显示新境界 【免费下载链接】parsec-vdd ✨ Perfect virtual display for game streaming 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd 你是否遇到过这样的困扰&#xff1f;…...

如何解决黑苹果USB端口识别问题:USBInjectAll内核扩展完整指南

如何解决黑苹果USB端口识别问题&#xff1a;USBInjectAll内核扩展完整指南 【免费下载链接】OS-X-USB-Inject-All Kext to inject all USB ports for the installed Intel EHCI/XHCI chipset automatically. 项目地址: https://gitcode.com/gh_mirrors/os/OS-X-USB-Inject-Al…...

Awesome Made by Brazilians 路线图深度分析:巴西开发者开源项目的未来发展趋势预测

Awesome Made by Brazilians 路线图深度分析&#xff1a;巴西开发者开源项目的未来发展趋势预测 【免费下载链接】awesome-made-by-brazilians &#x1f1e7;&#x1f1f7; A collection of amazing open source projects built by brazilian developers 项目地址: https://g…...

【机器学习】神经网络学习手册(四)损失函数

损失函数 Loss Function 用来衡量模型“错的有多离谱” 损失函数 模型预测值 vs 真实标签之间的差距 训练目标&#xff1a;找到一组权重&#xff0c;让损失函数的值最小化 - 损失越大 预测越差&#xff0c;需要优化 - 损失越小 预测越好&#xff0c;接近目标 常见的损失函数…...