流媒体TS协议

概念

TS协议是一种媒体流封装协议,类似于MP4

TS有三种类型包,其长度固定为188字节

  1. PAT包:节目关联表,包含所有的节目编号,是解析TS数据的七点
  2. PMT包:节目映射表,包含所有的节目元素编号,是获取媒体流的关键
  3. PES包:就是媒体流数据包,包含了视频帧,音频帧的数据

PS补充:
ES:是指需要传输的视频流(H164,H265等),音频流(AAC,MP3等)的原始流。
PID:包含在TS头中,标识特定的媒体流或TS包(PMT)。通过该字段找到需要的PMT和媒体流。
PCR:用于同步音视频的传输和播放,与PTS时间说可以互相转化。
PTS/DTS:媒体流的时间戳。在PES包中包含。
PSI:是指节目专用信息表。它由节目关联表(PAT)、条件接收表(CAT)和节目映射表(PMT)组成

PAT格式

在这里插入图片描述

PMT格式:
在这里插入图片描述

TS传输流程

PAT->PMT->…PMT->PES->…->PAT->PMT->…->PMT->PES
首先解析PAT包,获取PID字段,其中PAT的PID字段固定为0x0, 在PAT中包含了各个PMT的PID,解析即可获得视频流或者音频流的PID,并且查找其PMT编号, 再继续收包获取对应想要的PMT流,即可找到对应媒体流的PID,从而收取数据包PES

TS文件

TS文件为传输流文件
文件分为三层
TS层:在PES层的基础上加入数据流和识别传输的必要信息
PES层:在音视频基础上加入了时间戳等对数据帧的说明信息
ES层: 音视频数据
在这里插入图片描述
ts 包⼤⼩固定为 188 字节,ts 层分为三个部分:ts headeradaptation fieldpayload
ts header固定 4 个字节;adaptation field 可能存在也可能不存在,主要作⽤是给不⾜ 188 字节的数据做填充;
payload 是 pes 数据

ts header

在这里插入图片描述
ts 层的内容是通过 PID 值来标识的,主要内容包括:PAT 表、PMT 表、⾳频流、视频流。解析 ts 流要先找到 PAT 表,只要找到 PAT 就可以找到 PMT,然后就可以找到⾳视频流了。PAT 表的和 PMT 表需要定期插⼊ ts 流,因为⽤户随时可能加⼊ ts 流,这个间隔⽐较⼩,通常每隔⼏个视频帧就要加⼊ PAT和 PMT。PAT 和 PMT 表是必须的,还可以加⼊其它表如 SDT(业务描述表)等,不过 hls 流只要有PAT 和 PMT 就可以播放了。

PAT 表:主要的作⽤就是指明了 PMT 表的 PID 值。
PMT 表:主要的作⽤就是指明了⾳视频流的 PID 值。
⾳频流/视频流:承载⾳视频内容

adapation field

在这里插入图片描述
pcr 是节⽬时钟参考,pcr、dts、pts 都是对同⼀个系统时钟的采样值,pcr 是递增的,因此可以将其设置为 dts 值,⾳频数据不需要 pcr

pes 层:Packet Elemental Stream

Pes Header
在这里插入图片描述
pts 是显示时间戳、dts 是解码时间戳,视频数据两种时间戳都需要

es 层

直接填充H264/AAC

问题 如何进行切包到188字节传输

payload_unit_start_indicator 来标记新数据的开始 值为1代表一个帧的开始

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值