downgoon / -MPEG2-TS-HOWTO

0 stars 0 forks source link

TS结构 #1

Open downgoon opened 6 years ago

downgoon commented 6 years ago

单个轨道结构

以视频为例,我们将视频压缩成的H264码流,可以称作为ES流,它有很多个,将其 每帧 打包变为PES流,再将PES流拆分成多个 188字节,称为TS流。

“对应关系” 简单理解:H264视频流 -> m个 -> n个ts

1. 划分若干个

2. 每个切分成若干ts流

标题说每个切分成若干ts流,确切来讲应该是:每个PES包,切分成多个ts块(1PES 切成N段,每段组成一个TS包的负载。)。 就是图中从第3行变到第4行的过程。

3. 三大类五小类ts

多个轨道描述

一个“节目”通常有:视频轨道,音频轨道和文本轨道组成。

PSI(节目特定信息) 分为PAT(节目相关表)和PMT(节目映射表) 1个PAT表中包含N个PMT表的索引信息 而1个PMT表中又包含 视频PES, 音频PES 等索引信息。

小结: 1个PAT -> N个 PMT -> 视频PES + 音频PES + 文本PES

PAT与PMT

TS Package

参考资料

downgoon commented 6 years ago

MPEG-2 Transport Stream Analysis and Recording

ES流(Elementary Stream,基本流):数字电视各组成部分编码后所形成的直接表示基本元素内容的流,包含视频、音频或数据的连续码流。

PES流(Paketized Elementary Stream,打包基本码流):是将基本的码流ES流根据需要分成长度不等的数据包,并加上包头就形成了打包的基本码流PES流。

PS (Program Stream,节目流):将一个节目的多个组成部分按照它们之间的互相关系进行组织并加入各组成部分关系描述后的码流。PS流是一种多路复用数字音频、视频等的封装容器,它一个或多个具有共同的时间基准的PES流合并成一个整体流,主要用于节目存储。其包长不固定,且较长,一旦失去同步信息,接收机无法确定下一包的同步位置,会造成失步,导致严重的信息丢失。PS流适用于误码小、信道较好的环境,如演播室、家庭环境和存储介质中。

TS流(Transport Stream,传输流):是将一个节目的多个组成部分按照它们之间的互相关系进行组织并加入各组成部分关系描述和节目组成信息,并进一步封装成传输包后的码流。TS流是将视频、音频、PSI等数据打包成传输包进行传送。主要用于节目传输。TS的传输包长度固定,一般为188字节。

TS流和PS流是MPEG-2标准中规定的两种输出码流。TS格式中,从视频流的任意一片断开始都可以独立解码,而PS格式不可以。由于TS流具备较强的抵抗传输误码的能力,因此目前在传输媒体中进行传输的MPEG-2码流基本上都采用了TS流的包格式。

TS流的播放:播放前将TS流文件的后缀名该为.mpg或者.mpeg,用可以直接播放MPEG-TS流的播放器(一般的播放器都可以)打开播放即可。

downgoon commented 6 years ago

关于TS流中的填充字节

TS流中有2中不同的填充形式, 因为TS每一包要求是188个字节,当不足188个字节的时候, 必须要补充到188个字节,这就涉及到填充的问题。

<1>. 如果TS包中承载的是PSI数据(PAT,PMT等),那么其填充是在该包的最后一个有效字节的后面填充0xFF直到满足188个字节为止。 解码器会丢弃这些字节,具体说明参考 ISO_IEC 13818-1.pdf 60 / 174 <2>. 如果TS包中承载的是PES数据,那么当不足188个字节的时候,需要使用adaptation_field 这个域,也就是指定TS包中的adaptation_field_control的值来控制payload与adaptation_field的承载关系,同时指定PES中的adaptation_field_length指定填充多少字节,具体的填充字节值应该是随意的建议使用FF,并且此adaptation_field的使用好像只能在PES中使用。 ISO_IEC 13818-1.pdf 39 / 174
downgoon commented 6 years ago

188字节序列

参考资料

downgoon commented 6 years ago

参考资料