前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >音视频基础之复合流解析:TS流格式的讲解

音视频基础之复合流解析:TS流格式的讲解

作者头像
用户6280468
发布2022-11-28 17:27:00
2.1K0
发布2022-11-28 17:27:00
举报
文章被收录于专栏:txp玩Linuxtxp玩Linux

一、复合流的概念,什么是复合流?

复合流简单地说,就是一条流包含视频和音频。如果一条流只包含音频或者视频的话,我们称之为裸流,比方说H264裸流、aac裸流等。在音视频中,TS流(全称是:MPEG2-TS)是一种常用的复合流(目前属于最常见的复合流)。几乎所有的流媒体协议都支持TS流,如:RTSP、UDP、SRT等等(RTMP属于FLV流媒体协议,下一篇会详细介绍)。

二.TS流的结构介绍:

2.1.TS流支持的三层结构:

他分别是:

  • Transport Stream层
  • Pes层(Packet Element Stream)
  • ES流层(Elementary Stream)

2.2.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表的具体内容
  • 音视频流:就是用户插入的具体音视频数据

2.3.PES层结构的讲解:

我们介绍完Transport Stream层之后,我们再来看看PES层的内容。PES层的主要功能是在每一个音视频流上添加时间戳。这就是我们经常在ffplay或者vlc播放器看到有PTS、DTS的信息。我们先来看看PES的结构:

PTS指的是显示时间戳,DTS指的是解码时间戳。在绝大部分情况下,PTS和DTS的值都是相同的,但如果编码器引入B帧的话,PTS和DTS就要根据B真的间隔去计算DTS。

音频的PTS则永远等于DTS

2.4.ES层结构的讲解:

ES层就是我们常说的视频裸流,音频裸流。比方说:H264/HEVC码流 AAC码流。在TS流的ES层里面,所有的视频裸流和音频裸流都需要进行打包操作。比方说以H264码流为例,所有的H264裸流都遵循NALU格式,这其中包括SPS、PPS、I帧。

这里由于是ES流的结构,在上一几篇文章已经介绍过了,所以这里不做过多介绍

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-11-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 txp玩Linux 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、复合流的概念,什么是复合流?
  • 二.TS流的结构介绍:
    • 2.1.TS流支持的三层结构:
      • 2.2.Transport stream层的讲解:
        • 2.3.PES层结构的讲解:
          • 2.4.ES层结构的讲解:
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档