MPEGTS容器格式

MPEG-TS(MPEG Transport Stream,MPEG传输流)是一种视频、音频、数据等多媒体内容的封装格式,广泛应用于数字广播、流媒体传输、卫星电视、IPTV、蓝光光盘等领域。它是一种针对实时传输设计的格式,具有较强的错误恢复能力和实时传输的特性。
将媒体数据进行MPEGTS格式的封装时候分三层:
1.ES流层(原始数据压缩或者编码后)

2.PES流层(对ES层进行打包,加上PTS/DTS等时间戳信息。一个PES包通常只含一帧视频帧而一个PES包中的音频帧可以有多帧。低分辨率场景下可能合并多帧非连续关键帧的视频帧)

3.TS流层(网络上传输的一个一个的TS包,国区标准一个TS包为188字节,如果在将PES包进行打包的时候,一个PES包不足184字节(去掉TS包头的4个字节)时,他会进行多于字节的填充填到一个TS符合188字节为止。)

MPEG-TS 包头结构(通常为4字节(32位),包含了包的同步字、PID(Packet Identifier)、包的长度、错误检查等控制信息。)

字段名比特位长度说明
Sync Byte0-78固定为 0x47,用于标识TS包的开始。
Transport Error Indicator811表示传输错误(如调制误码),通常为 0
Payload Unit Start Indicator911表示负载起始(如PES头或PSI表起始)。
Transport Priority1011表示高优先级(用于网络拥塞时优先传输)。
PID (Packet Identifier)11-2313包的唯一标识符(如0x0000为PAT表,0x0020为视频流)。
Transport Scrambling Control24-25200表示未加密,其他值表示加密模式。
Adaptation Field Control26-27201:仅负载;10:仅适配字段;11:负载+适配字段;00:保留。
Continuity Counter28-314每个PID的递增计数器(0~15循环),用于检测丢包或重复。

适配字段(Adaptation Field)结构

字段名长度说明
Adaptation Field Length1字节适配字段的总长度(不包括本字节)。
Discontinuity Indicator1 bit1表示不连续(如节目切换或时钟重置)。
Random Access Indicator1 bit1表示关键帧(随机接入/刷新点)。
PCR Flag1 bit1表示包含PCR(节目时钟参考,用于同步)。
OPCR Flag1 bit1表示包含OPCR(可选时钟参考)。
Splicing Point Flag1 bit1表示拼接点(用于广告插入等)。
PCR (Program Clock Reference)6字节时间戳(27MHz时钟,33位基值+9位扩展)。
Stuffing Bytes可变填充字节(全0xFF),用于对齐。

TS负载:TS包的负载,负载部分是包的主要内容,通常包含音视频数据、时间戳、同步信息等。这里就不再讲解

关于MPEGTS包头的某些重要字段:

1.同步字(Sync Byte):
TS包的第一个字节为固定的同步字(0x47)。接收方使用这个同步字来判断数据流的开始位置,确保数据传输的同步。

2.PID(Packet Identifier):
每个TS包都有一个PID,用于标识包的内容。不同类型的数据(音频、视频、字幕、控制信息等)会分配不同的PID。PID允许接收端根据PID提取特定类型的数据。

PID值(十六进制)用途
0x0000PAT(Program Association Table,节目关联表。用于描述整个传输流中的节目列表,并指明各个节目对应的 PMT PID。)
0x0001CAT(Conditional Access Table,条件访问表,用于管理加密内容的访问权限。它的核心作用是授权解密)
0x0010PMT(Program Map Table,节目映射表。描述特定节目中音频/视频流的对应PID和类型。)
0x0020视频流(如H.264),视频编码后的数据
0x0021音频流(如AAC),音频编码后的数据

NIT表的PID值通常是通过 PAT(Program Association Table) 中的 network_PID 字段动态定义而非TS包头中的PID某个固定值来指定。

一个节目可对应多个PID,但是一个PID只对应一条流。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值