MPEG2-TS流解析(音视频基础知识)

在音视频中,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 举报,一经查实,本站将立刻删除。

(1)

相关推荐

发表回复

登录后才能评论