音视频入门基础: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的音频流如下:

相关推荐
EasyCVR11 小时前
国标GB28181视频监控平台EasyCVR智慧农场监管可视化方案设计
音视频
雾江流19 小时前
HDx播放器1.0.184 | 支持多种格式和4K/8K高清视频播放,内置推特~脸书下载器
音视频·软件工程
tongyue19 小时前
智慧家居——Flask网页视频服务器
服务器·flask·音视频
美狐美颜SDK开放平台20 小时前
从零到一:开发直播的美颜sdk与滤镜特效技术解析
人工智能·音视频·美颜sdk·直播美颜sdk·视频美颜sdk
ComputerInBook21 小时前
视频编码解码基础——P帧&I帧&B帧
人工智能·音视频·视频编码
Bruce_Liuxiaowei21 小时前
适配安可系统的广电视频服务器点名开源模块推荐
服务器·开源·音视频
indexsunny21 小时前
互联网大厂Java面试实战:音视频场景下的Spring Boot与Kafka应用解析
java·spring boot·redis·微服务·面试·kafka·音视频
山东布谷网络科技21 小时前
海外1v1视频社交APP开发难点与核心功能全解析
开发语言·数据库·mysql·ios·php·音视频·软件需求
小咖自动剪辑21 小时前
视频批量智能分割工具:一键自动剪辑与镜头识别教程
音视频
做萤石二次开发的哈哈21 小时前
萤石开放平台 音视频 | EZOPEN协议介绍
linux·运维·服务器·网络·人工智能·音视频