在音视频中,MPEG2-TS(简称TS)流是一种常用的复合流。几乎所有的流媒体协议都支持TS流,如:RTSP、UDP、SRT等。
TS流的结构介绍
TS流支持的三层结构:
他分别是:
- Transport Stream层
- Pes层(Packet Element Stream)
- ES流层(Elementary Stream)
Transport stream层的讲解
TS层的大小固定在188个字节,并且TS内部也分成三个部分:分别是TS Header、Adaptation Field、Payload。其中TS Header指的是TS的头部,固定四个字节。Adaptation Field没有特别的意义,主要是补充188个字节的。payload指的是pes的具体数据。
- TS头部的结构:
- Adaption的结构:
Transport stream层的主要内容包括了:PAT表、PMT表、音频流、视频流。PAT表的主要功能是通过PMT找到对应的音视频流。PAT表的PID值一般为0,而PAT和PMT需要不定时插入TS流。所以,我们总结一下PAT表、PMT表的具体作用:
- PAT表:最主要功能是通过此表找到PAT表的PID值,下面这个是PAT表的内容
- PMT表:最主要功能是找到音视频的PID值,下面是PMT表的具体内容
- 音视频流:就是用户插入的具体音视频数据
PES层结构的讲解
我们介绍完Transport Stream层之后,我们再来看看PES层的内容。PES层的主要功能是在每一个音视频流上添加时间戳。这就是我们经常在ffplay或者vlc播放器看到有PTS、DTS的信息。我们先来看看PES的结构:
PTS指的是显示时间戳,DTS指的是解码时间戳。在绝大部分情况下,PTS和DTS的值都是相同的,但如果编码器引入B帧的话,PTS和DTS就要根据B真的间隔去计算DTS。
音频的PTS则永远等于DTS。
ES层结构的讲解:
ES层就是我们常说的视频裸流,音频裸流。比方说:H264/HEVC码流 AAC码流。在TS流的ES层里面,所有的视频裸流和音频裸流都需要进行打包操作。比方说以H264码流为例,所有的H264裸流都遵循NALU格式,这其中包括SPS、PPS、I帧。
版权声明:本文内容转自互联网,本文观点仅代表作者本人。本站仅提供信息存储空间服务,所有权归原作者所有。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至1393616908@qq.com 举报,一经查实,本站将立刻删除。