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

[复制链接]
发表于 2025-12-10 04:25:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
=================================================================
音视频入门根本:MPEG2-TS专题系列文章:
音视频入门根本:MPEG2-TS专题(1)——MPEG2-TS官方文档下载
音视频入门根本:MPEG2-TS专题(2)——使用FFmpeg下令天生ts文件
音视频入门根本:MPEG2-TS专题(3)——TS Header简介
音视频入门根本:MPEG2-TS专题(4)——使用工具分析MPEG2-TS传输流
音视频入门根本:MPEG2-TS专题(5)——FFmpeg源码中,判断某文件是否为TS文件的实现
音视频入门根本:MPEG2-TS专题(6)——FFmpeg源码中,获取MPEG2-TS传输流每个transport packet长度的实现
音视频入门根本:MPEG2-TS专题(7)——FFmpeg源码中,读取出一个transport packet数据的实现
音视频入门根本:MPEG2-TS专题(8)——TS Header中的适配域
音视频入门根本:MPEG2-TS专题(9)——FFmpeg源码中,解码TS Header的实现
音视频入门根本:MPEG2-TS专题(10)——PSI、SI简介
音视频入门根本:MPEG2-TS专题(11)—— TS中的Section
音视频入门根本:MPEG2-TS专题(12)—— FFmpeg源码中,把各个transport packet组合成一个Section的实现
音视频入门根本:MPEG2-TS专题(13)——FFmpeg源码中,分析Section Header的实现
音视频入门根本:MPEG2-TS专题(14)——PAT简介
音视频入门根本:MPEG2-TS专题(15)——FFmpeg源码中,分析Program association section的实现
音视频入门根本:MPEG2-TS专题(16)——PMT简介
音视频入门根本:MPEG2-TS专题(17)——FFmpeg源码中,分析TS program map section的实现
音视频入门根本:MPEG2-TS专题(18)——PES流简介
音视频入门根本:MPEG2-TS专题(19)——FFmpeg源码中,分析TS流中的PES流的实现
音视频入门根本:MPEG2-TS专题(20)——ES流简介
音视频入门根本:MPEG2-TS专题(21)——FFmpeg源码中,获取TS流的视频信息的实现
音视频入门根本:MPEG2-TS专题(22)——FFmpeg源码中,获取TS流的音频信息的实现
音视频入门根本:MPEG2-TS专题(23)——通过FFprobe体现TS流每个packet的信息
音视频入门根本:MPEG2-TS专题(24)——FFmpeg源码中,体现TS流每个packet的pts、dts的实现
音视频入门根本:MPEG2-TS专题(25)——通过FFmpeg下令使用UDP发送TS流
音视频入门根本:MPEG2-TS专题(26)——通过FFmpeg下令使用RTP发送TS流
=================================================================



一、弁言

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:



program_info_length:占12位,指定紧跟在program_info_length属性之后的节目形貌信息的字节数:


跟在program_info_length属性之后的节目形貌信息如下。假如program_info_length的值为0,表现没有节目形貌信息:



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





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



ES_info_length:占12位,ES形貌信息的长度,假如值为0表现没有信息:


ES形貌信息如下:




三、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的音频流如下:


回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表