音视频入门基础:MPEG2-TS专题(16)——PMT简介

一、引言

PMT(Program Map Table)与PAT表成对出现,其PID由PAT表给出。通过PMT表可以得到该节目包含的视频和音频信息,从而找到音视频流:

二、PMT表中的属性

根据《T-REC-H.222.0-202106-S!!PDF-E.pdf》第79页,PMT表(Program map table)由一个或多个段(Transport stream program map section,简称TS program map section)组成,TS program map section就是组成PMT表的Section(段)。TS program map section包含下图所示部分:

即:

其中,比较重要的属性是:

table_id:占8位,为表id。TS program map section的table_id固定为0x02:

section_syntax_indicator:占1位,为段语法标志位,值必须为1:

section_length:占12位,为该TS program map section从program_number属性开始到该Section结束(包含CRC校验)的总长度,单位为字节。所以section_length的值加3才是该TS program map section的实际总长度:

program_number:占16位,为节目号,TS流中一个频道的唯一标志。跟PAT表的program_number属性对应上:

current_next_indicator:占1位。值为1:发送的TS program map section为当前有效的,值为0:发送的该Section尚未有效并且下一个Section将生效:

PCR_PID:占13位,PCR(节目参考时钟)所在transport packet(TS分组)的PID:

stream_type:占8位,媒体流的类型,具体流类型参考下面的表格。比如值为0x1B表示是AVC,即H.264视频流;值为0x0F表示是ADTS包装的AAC音频流:

elementary_PID:占13位,该节目的音频或视频PID:

ES_info_length:占12位,ES描述信息的长度,如果值为0表示没有信息:

三、PMT表实例分析

用Elecard Stream Analyzer工具打开一个TS文件。可以看到其某个PMT表中program_number为1,表示这是一个节目号为"1"的节目:

该节目中有两个媒体流。第一个媒体流stream_type的值为0x1B,表示是H.264视频流,elementary_PID为0x100,所以该节目视频的PID为0x100;第二个媒体流stream_type的值为0x0F,表示是AAC音频流,elementary_PID为0x101,所以该节目音频的PID为0x101;

通过PMT表找到PID为0x100的视频流如下:

通过PMT表找到PID为0x101的音频流如下:

相关推荐
CCC:CarCrazeCurator12 小时前
Diffusion Transformer(DiT):原理、与 U-Net 对比及在视频生成中的深度应用
人工智能·音视频·transformer
山楂树の16 小时前
Video核心术语
学习·音视频
醒醒该学习了!16 小时前
AI生成视频与数字人
人工智能·音视频
ThinkPet17 小时前
记事-vue3项目整合Agora声网sdk实现RTC视频通话
vue.js·音视频·实时音视频
liyunlong-java18 小时前
Android 跳转系统相册选取图片/视频/音频/文档(适配全版本权限)
android·gitee·音视频
ACP广源盛1392462567319 小时前
GSV2231@ACP#三屏扩展旗舰芯片,TRAE SOLO 多任务并行开发核心引擎
运维·网络·人工智能·嵌入式硬件·gpt·电脑·音视频
硅谷秋水19 小时前
τ0-WM:用于机器人操纵的统一视频-动作世界模型
人工智能·机器学习·计算机视觉·语言模型·机器人·音视频
阿洛学长1 天前
MoneyPrinterTurbo 深度解析与部署实战:AI 一键短视频生成,从源码到上线全攻略
人工智能·音视频
MR.欻2 天前
ZLMediaKit 源码分析(四):RTP/RTCP 协议栈实现分析
c++·人工智能·vscode·ffmpeg·音视频
运维栈记2 天前
Remotion + Claude Code:用自然语言创作视频的革命性突破
人工智能·ai·音视频