hysAnalyser --- 逐包分析MPEG-TS的功能说明
前言
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数据;
2.鼠标右键菜单功能
主要用于
- 显示选定PID
- 快速定位附近关联数据(包括:相邻PAT,相邻PMT,相邻SDT,相邻PCR,相邻PTS、DTS,相邻关键帧)
- 同步字错误列表
- 数据另存文件,方便记录和备份目标数据。用方便单独分析和存档。
详细案例
下面是各种功能的演示抓图,希望能帮助到需要的朋友。
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. 待补充案例
工具已经支持,案例待补充
- RST (Running Status Table)
- DIT (Discontinuity Information Table)
- 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_number
和last_section_number
)
3. 时间处理:
- 40位时间格式:前16位为MJD(Modified Julian Date),后24位为UTC时间(BCD编码)
- 转换公式:MJD ≈ JD - 2400000.5
ATSC和DVB标准的差异
表类型 | DVB标准 | ATSC标准 | 差异说明 |
---|---|---|---|
网络信息 | NIT | VCT (Virtual Channel Table) | ATSC使用VCT描述频道映射 |
时间信息 | TDT/TOT | STT (System Time Table) | ATSC合并时间日期和时区 |
事件信息 | EIT | EIT+ETT (Extended Text Table) | ATSC分离文本和事件信息 |
服务信息 | SDT | VCT+MTT (Master Guide Table) | ATSC使用分层结构 |
加扰信息 | CAT | DCCT (Data Carousel Control Table) | ATSC使用不同的CA系统 |
特殊表 | DIT/SIT | 无直接对应 | ATSC无等价表 |
软件下载
方式一
Github地址 https://github.com/zymill/hysAnalyser
方式二
百度盘下载地址 https://pan.baidu.com/s/15EtyxUBhvokfXC2rJp_smQ?pwd=mpts
参考链接
- MPEG-1/2/4
- ITU官方
- AVS工作组
- ETSI
- 知乎:hysAnalyser v1.0.008版本发布
- CSDN:hysAnalyser 综述 — 一个特色TS流分析工具
- flvAnalyser综述 https://cloud.tencent.com/developer/article/2344723
- hysAnalyser综述 https://cloud.tencent.com/developer/article/2517652
- hysAnalyser从MPEG-TS导出ES功能说明
- hysAnalyser特色的TS流编辑、剪辑和转存MP4功能说明