hysAnalyser --- 逐包分析MPEG-TS的功能说明

article/2025/8/5 12:51:57

前言

hysAnalyser 是一款新颖、独具特色的 MPEG-TS 数据分析工具,定位于
1)音视频开发和测试人员:和MEPG-TS有关开发、调试、测试辅助;
2)和MPEG-TS相关业务系统的运维人员:如数字电视、OTT、互联网流媒体等领域,协助用户跟踪和分析查错和定位TS数据、DVB业务数据表问题,并且还可以支持定制化的MPEG-TS素材制作和转存。

关于它的完整介绍,作者已写过综述,有兴趣的可以访问如下地址:
知乎:hysAnalyser v1.0.008版本发布
CSDN:hysAnalyser 综述 — 一个特色TS流分析工具

摘要

本文主要介绍工具的逐包分析功能,提供基本操作指引、实际案例说明。
工具逐包分析功能的开发宗旨:
1)操作便捷,注重使用体验,异常结果尽可能的明示;
2)支持所有用户关注的包类型过滤条件,可以极大方便用户缩小数据范围,提升定位问题的速度;
3)支持主流格式,PSI/SI, ES数据导出等,支持快速切换和定位、可以为用户开发定制化功能;

现将 hysAnalyser 新版本(v1.0.008)分享给网友使用,希望能帮助到更多音视频开发的爱好者。
使用过程中,若遇到问题请您通过 Github官方地址 https://github.com/zymill/hysAnalyser 提issue,如果紧急也可以通过邮箱 hybase@qq.com 反馈!

逐包分析功能概述

hysAnalyser 在任务分析完成后,可以通过两个入口进入逐包分析。
如第一副图所示,逐包分析主要包括以下功能
1.TS包列表:序号,偏移地址,PID,起始标识,包类型,时间戳(PCR,PTS,DTS),图像类型(标识I、B、P)等
2.视频附加信息:视频Nal unit标识VPS/SPS/PPS/SEI等
3.PSI/SI附加信息:PAT/PMT/SDT/BAT等section 版本号,关注观察版本变化
4.数据预览:包数据的十六进制格式预览
5.解析结果1:TS 4个字节的包头解析
6.解析结果2:TS包头的调整字段解析
7.解析结果3:PAT/PMT/SDT/BAT/NIT/EIT/RST/TDT/TOT/DIT/SIT等常用数据表的解析及呈现
8.解析结果4:PES包头部数据的解析结果

主界面及操作指引

1.操作指引

数据过滤方法一:通过下拉框选对应数据表类型,可以独立显示目标数据。
数据过滤方法二:通过鼠标右键菜单,只显示指定PID数据;

图1.主界面

2.鼠标右键菜单功能

主要用于

  1. 显示选定PID
  2. 快速定位附近关联数据(包括:相邻PAT,相邻PMT,相邻SDT,相邻PCR,相邻PTS、DTS,相邻关键帧)
  3. 同步字错误列表
  4. 数据另存文件,方便记录和备份目标数据。用方便单独分析和存档。

在这里插入图片描述

详细案例

下面是各种功能的演示抓图,希望能帮助到需要的朋友。

1.TS包头调整字段解析

在这里插入图片描述

2.PAT(Program Association Table)解析

在这里插入图片描述

3.PMT(Program map table)分析

节目映射表
在这里插入图片描述

4.含加密描述符的PMT

在这里插入图片描述

5.含SCTE-35的PMT

Program map Table with SCTE-35
在这里插入图片描述

6.SDT(Service Description Table)解析

节目描述表
在这里插入图片描述

7.BAT(Bouquet Association Table)解析

Bouquet Association Table
在这里插入图片描述

8.NIT(Network Information Table)解析

Network Information Table
在这里插入图片描述

9.EIT(Event Information Table)解析

Event Information Table
在这里插入图片描述

10.CAT解析

在这里插入图片描述

11.TDT解析

Time and Date Table
在这里插入图片描述

12.TOT解析

Time offset table
在这里插入图片描述

13.SCTE-35数据表解析

在这里插入图片描述

14. 待补充案例

工具已经支持,案例待补充

  1. RST (Running Status Table)
  2. DIT (Discontinuity Information Table)
  3. SIT (Selection Information Table)

解析思路

解析要求

1. 基本流程

  • 过滤TS包的PID(PAT固定为0x0000)
  • 检查payload_unit_start_indicator定位表起始
  • 解析表头字段(table_id, section_length等)
  • 处理循环结构(program loop, ES loop等)
  • 验证CRC32(除TDT/DIT等短格式表)
  • 处理描述符(descriptor)嵌套结构

2. 关键检查点

  • section_syntax_indicator(1=长格式,0=短格式)
  • current_next_indicator(仅处理1=当前有效表)
  • 版本控制(version_number变化时需更新)
  • 段重组(section_numberlast_section_number

3. 时间处理

  • 40位时间格式:前16位为MJD(Modified Julian Date),后24位为UTC时间(BCD编码)
  • 转换公式:MJD ≈ JD - 2400000.5

ATSC和DVB标准的差异

表类型DVB标准ATSC标准差异说明
网络信息NITVCT (Virtual Channel Table)ATSC使用VCT描述频道映射
时间信息TDT/TOTSTT (System Time Table)ATSC合并时间日期和时区
事件信息EITEIT+ETT (Extended Text Table)ATSC分离文本和事件信息
服务信息SDTVCT+MTT (Master Guide Table)ATSC使用分层结构
加扰信息CATDCCT (Data Carousel Control Table)ATSC使用不同的CA系统
特殊表DIT/SIT无直接对应ATSC无等价表

软件下载

方式一
Github地址 https://github.com/zymill/hysAnalyser
方式二
百度盘下载地址 https://pan.baidu.com/s/15EtyxUBhvokfXC2rJp_smQ?pwd=mpts

参考链接

  1. MPEG-1/2/4
  2. ITU官方
  3. AVS工作组
  4. ETSI
  5. 知乎:hysAnalyser v1.0.008版本发布
  6. CSDN:hysAnalyser 综述 — 一个特色TS流分析工具
  7. flvAnalyser综述 https://cloud.tencent.com/developer/article/2344723
  8. hysAnalyser综述 https://cloud.tencent.com/developer/article/2517652
  9. hysAnalyser从MPEG-TS导出ES功能说明
  10. hysAnalyser特色的TS流编辑、剪辑和转存MP4功能说明

http://www.hkcw.cn/article/nPRBUlgyER.shtml

相关文章

语音转文字工具

平时工作和学习比较忙,可能没时间听讲座,只能看回放,回访也很长,这时,我们可以借助语言转文字,通过阅读文字快速了解讲座的重点,今天给大家分享一个本人经常用的语言转文字工具,改工…

vue3(入门,setup,ref,计算属性,watch)

vue3(入门,setup,ref,计算属性,watch) 项目创建 Vue2(选项式api) 分散 vue3(组合式api) setUp() setup返回值可以是一个渲染函数 面试题: setup和vue2中的配置项可以同时存在吗&a…

c++ 类型转换函数

测试代码&#xff1a; void testTypeTransfer() { // 测试类型转换函数class Distance {private:int meters;public:// 类型转换函数&#xff0c;int表示转化为int类型operator int() {std::cout << "调用了类型转换函数" << endl;return meters; }Dist…

如何使用 Docker 部署grafana和loki收集vllm日志?

环境: Ubuntu20.04 grafana loki 3.4.1 问题描述: 如何使用 Docker 部署grafana和loki收集vllm日志? 解决方案: 1.创建一个名为 loki 的目录。将 loki 设为当前工作目录: mkdir loki cd loki2.将以下命令复制并粘贴到您的命令行中,以将 loki-local-config.yaml …

汽车安全 2030 预测 (功能安全FuSa、预期功能安全SOTIF、网络安全CyberSecurity):成本、效益与行业影响

汽车安全 2030 预测 (功能安全FuSa、预期功能安全SOTIF、网络安全CyberSecurity)&#xff1a;成本、效益与行业影响 到 2030 年&#xff0c;汽车行业将迎来一场安全技术的深度变革&#xff0c;其中 “三重安全防护”&#xff08;功能安全 FuSa、预期功能安全 SOTIF、网络安全&…

AI视频“入驻”手机,多模态成智能终端的新战场

文&#xff5c;乐乐 今天&#xff0c;无线蓝牙耳机&#xff08;TWS&#xff09;已经成为人人都用得起的产品。 但退回到9年前&#xff0c;苹果AirPods是全球第一款真正意义上的无线蓝牙耳机。靠着自研并申请专利的Snoop监听技术&#xff0c;苹果解决了蓝牙耳机左右延时和能耗…

嵌入式学习笔记 - FreeRTOS v9.0.0 与v10.0.1不同版本占用资源对比

以下为用示例对比freeRTOS v9.0.0版本以及v10.0.1版本占用资源的境况&#xff0c;两者均在运行完全相同的任务包括任务内容与数量的情况进行对比&#xff0c;任务的创建均使用静态内存方式创建&#xff0c;每个任务的任务堆栈均设置相同大小&#xff0c;并且freeRTOSconfig.h文…

Git仓库大文件清理指南

前言 当大文件被提交到 Git 仓库后又删除&#xff0c;但仓库体积仍然很大时&#xff0c;这是因为 Git 保留了这些文件的历史记录。要彻底清理这些文件并减小仓库体积&#xff0c;你需要重写 Git 历史。 注意事项 这会重写历史 - 所有协作者都需要重新克隆仓库 备份你的仓库 …

LLMs之MCP:如何使用 Gradio 构建 MCP 服务器

LLMs之MCP&#xff1a;如何使用 Gradio 构建 MCP 服务器 导读&#xff1a;本文详细介绍了如何使用Gradio构建MCP服务器&#xff0c;包括前提条件、构建方法、关键特性和相关资源。通过一个简单的字母计数示例&#xff0c;演示了如何将Gradio应用转换为LLM可以使用的工具。Gradi…

Redis最佳实践——性能优化技巧之集群与分片

Redis集群与分片在电商应用中的性能优化技巧 一、Redis集群架构模式解析 1. 主流集群方案对比 方案核心原理适用场景电商应用案例主从复制读写分离数据冗余中小规模读多写少商品详情缓存Redis Sentinel自动故障转移监控高可用需求场景订单状态缓存Redis Cluster原生分布式分片…

2025年最新Android Studio汉化教程

首先把idea更新到IntelliJ IDEA 2024.3.5 (Community Edition)&#xff0c;然后关闭AndroidStudio 没有idea可以下载最新的 IntelliJ IDEA – the IDE for Pro Java and Kotlin Development 找到idea的安装路径&#xff0c;找到“\plugins\localization-zh 然后把“localizat…

uniapp实现下载文件到手机(安卓),通过系统分享到其他app

要在UniApp中实现下载文件到安卓手机&#xff0c;我这里使用的是plus.io直接获取文件系统&#xff0c;大家可以找一下dcloud插件或者其他api。以下是一个简单的步骤&#xff1a; 首先&#xff0c;你需要创建一个按钮或者其他触发下载的UI元素&#xff0c;用户点击后触发文件下载…

flutter-渐变色边框和渐变色文字和渐变色背景

文章目录 1. 介绍2. 代码实现2-1. 渐变色背景2-2. 渐变色边框2-3. 宽高由内容撑起的渐变色边框2-4. 渐变色文本 3. 完整例子 1. 介绍 在 flutter 中&#xff0c;渐变有三种&#xff0c;线性渐变 LinearGradient、放射状渐变 RadialGradient、扇形渐变 SweepGradient。一般都是…

记录一次macbook 安装macOS+win11双系统的历程。包括MacBook电脑恢复、绕过win11限制等

一、MacBook恢复macOS系统&#xff0c;或有问题可以重新用此操作 关机状态&#xff0c;同时摁住 optioncommandR 三个键&#xff0c;然后再摁开机键&#xff0c;等出现 一个地球的图标即可松开。 然后正常链接wifi&#xff0c;让它自动下载一些组件即可。 这里对硬盘进行重新…

移动电视盒MGV2000刷安卓及Armbian笔记

我的是mgv2000 JL代工的&#xff0c;配置是四核1G内存8GEMMC&#xff0c;我的目的是把他刷成linux&#xff0c;网上查询资料后&#xff0c;了解到大概分以下两个步骤&#xff1a; #一、先把原来移动自带的系统刷新为适合的安卓系统 #二、在新的安卓系统下&#xff0c;再刷成A…

蚂蚁百宝箱3分钟上手MCP:6步轻松构建智能体应用并发布小程序

蚂蚁百宝箱3分钟上手MCP&#xff1a;6步轻松构建智能体应用并发布小程序 AI 能聊天、能画画&#xff0c;但它能帮你赚钱吗&#xff1f;智能体空有一身本领却难以变现&#xff0c;是不是让你也感到无奈&#xff1f; 别担心&#xff0c;蚂蚁百宝箱「MCP专区」来啦&#xff01;现…

Android Studio 使用WIFI连接手机进行无线调试 adb命令

1.将电脑和手机连接到同一WIFI 2.手机连接usb&#xff0c;连接到AndroidStudio&#xff0c;和平时连线调试一样。 3.打开AndroidStudio下方Terminal便可以开始输入adb命令。 4.输入 adb devices 命令查看设备 adb devices效果如下 5.设置设备端口号命令 adb tcpip 5555 端…

MySQL—使用binlog日志恢复数据

一、binlog日志恢复数据简介 在 MySQL 中&#xff0c;使用二进制日志&#xff08;binlog&#xff09;恢复数据是一种常见的用于故障恢复或数据找回的方法。以下是详细的使用步骤&#xff1a; 确认 binlog 已启用&#xff1a;首先需要确认 MySQL 服务器已经启用了二进制日志功…

Kotlin-类和对象

文章目录 类主构造函数次要构造函数总结 对象初始化 类的继承成员函数属性覆盖(重写)智能转换 类的扩展 类 class Student { }这是一个类,表示学生,怎么才能给这个类添加一些属性(姓名,年龄…)呢? 主构造函数 我们需要指定类的构造函数。构造函数也是函数的一种,但是它专门…

OpenWrt 配置 IOS 、 Android USB共享网络

前言 由于快过年了老家的宽带早已到期, 手机卡流量还有100G, 于是想到使用手机USB网络共享给openwrt来上网。 设备准备 准备手机( IOS / Android / USB随身Wi-Fi ) 带USB插口的openwrt路由器 openwrt配置 安装 kmod-usb-net-rndis、kmod-usb-storage 依赖包: 打开openwrt…