当前位置: 首页 > news >正文

TS协议之PES(ES数据包)

TS协议之PAT(节目关联表)
TS协议之PMT(节目映射表)
TS协议之PES(ES数据包)

该文档已上传:下载地址

1. 概要

1.1 TS数据包(PES)协议数据组成

TS=TS头+PES头+ES。TS,PES头是在音视频流传输过程中需要的数据信息,而ES其实就是我们所说的要打包的音视频原始流数据:视频流(H264/H265), 音频流:(AAC)。

协议:ISO/IEC 13818-1

1.2 TS数据包(PES)协议格式

1.3 字段解释

1.3.1 TS

1.3.1.1 TS头

字段字段描述
同步字节固定为0x47
错误标识通常为0
负载起始标识符因为一个TS包规定为188字节,一帧数据可能被分为好多切片,帧数据第一个切片该标识为1,其余切片为0;
传输优先级0:低优先级,1:高优先级,通常取0;
PID值用于数据标识
传输加扰控制00:未加密,通常取001 10 11 :用户定义
是否包含自适应区00:保留01:为无自适应域,仅含有效负载10:为仅含自适应域,无有效负载11:为同时带有自适应域和有效负载。
递增计数器大小4bit,范围:0-15,不一定从0开始,但是必须是连续递增的,如果加到15,从0重新开始++。

1.3.1.2 自适应区

字段字段描述
自适应区长度自适应区的数据长度
是否包含PCR0x50:包含PCR,0x40:不包含PCR(有时候0x00也表示不包含PCR)
PCR五个字节的PCR数据,PRC系统用于同步音视频数据的传输与播放,PCR是一个时钟参考值,用来指示从传输流的开始到当前位置的时间戳。它以90 kHz的时钟频率进行计数
填充字节不够188字节用0xFF做填充数据。TS数据包一般自适应区后面接PES数据,在PES载荷中做填充

1.3.2 PES

1.3.2.1 PES头

字段字段描述
包起始码固定00 00 01
流ID音频取值:0xc0-0xdf,一般取值0xc0 视频取值:0xe0-0xef,一般取直0xe0
pes包长度可选信息头的长度+ES(原始流数据(H264或AAC))数据长度,例如:要打包一个视频帧,长度我123456,可以分片为很多个ts包,但是pes包的长度为可选头长度+123456,因为PES描述的是一帧数据的信息不是一个ts信息,所以每帧的第一个ts包才有PES信息,详情参考文章结尾。

1.3.2.2 PES可选头信息

字段字段描述
10固定为10.
PES加扰控制0:不加密
PES优先级0:低优先级,1:高优先级,一般取值为0
数据定位符1:ES数据紧跟PES头,0:不一定紧跟,一般选0;
版权标识PES的有效负载是有版权的,一般取值为0
原始或者复制1:负载是原始数据,0:负载是备份
7个标志位可以看作是8个bit代表8种状态,取值规则参考后面描述

7个标志位取值规则,8bit一个bit代表一种状态:

00000000
PTSDTSESCRES率OSM模型附加信息前一个CRC扩展域

例如:

0x80:只含有PTS

0xc0:含有PTS和DTS

2. 实例数据分析

TS头                 TS自适应区                         PES头                                                      ES(H264)

47 41 00 30 07 50 00 00 00 00 7E 00 00 00 01 E0 00 00 80 80 05 21 00 01 00 01 00 00 00 01 09 F0 00 00 00 01 67 42 00 2A 96 35 40 F0 04 4F CB 37 05 01 05 02 00 00 00 01 68 CE 31 B2 00 00 00 01 06 E5 01 B0 80 00 00 00 01 65 B8 00 00 1B 68 C0 00 00 B7 19 40 38 2E E0 05 4C 10 40 02 88 40 71 20 C3 3C 18 45 E2 F3 C5 B5 7B CB 8F 71 1E AF BE 7E F7 DF 7D F7 DF 7D F7 DE AF BE F3 63 EF 26 3D 5F 7D F7 93 1F 7B BC F8 F7 7B BE FB EF 72 77 9B 1E AF 72 77 10 0D 44 A7 C3 E1 F7 A7 94 5F A4 94 BD C8 21 C7 88 70 F2 14 83 53 CA 21 EF 24 A1 67 89 86 19 0F 89 48 37 93 77 DF 7D EE

2.1 PES包传输规则

一帧数据被分为很多分片,每个分片的数据结构不尽相同如下:

第一个ts:TS头+PES头+部分ES;

第二个ts:TS头+部分ES;

...

最后一个ts:TS头+填充字节+部分ES;

也就是一帧数据只有一个PES。

http://www.lryc.cn/news/116481.html

相关文章:

  • 银河麒麟V10 SP3 X86 二进制文件部署 mysql-5.7.29 GTID 半同步复制的双主架构
  • python爬虫3:requests库-案例1
  • 计算机网络 数据链路层 媒体接入控制
  • 面部表情识别(Pytorch):人脸检测模型+面部表情识别分类模型
  • 外卖点餐小程序开源源码——支持扫码点餐
  • 十分钟掌握使用 SolidJS 构建全栈 CRUD 应用程序
  • LabVIEW开发多材料摩擦电测量控制系统
  • 【Linux】网络基础1
  • HTML - Javascript - 原生的JS HTTP请求:实用主义的一篇文章
  • Intellij IDEA运行报Command line is too long的解决办法
  • 信号槽传输过程中指针所指对象的生命周期
  • c++ 递归锁的使用
  • Oracle TDE wallet
  • 多模态学习
  • Android学习之路(2) 文本设置
  • 手写springboot
  • 报错Uncaught (in promise) Error: Manifest request to...
  • 微信私域更好玩了
  • 基于ant-design的a-modal自定义vue拖拽指令
  • 【ES】笔记-模板字符串(template string)是增强版的字符串`${expresions}`
  • 利用 OLE 对象漏洞的 HWP 恶意文件浮出水面
  • 【CSS】倾斜按钮
  • js 正则表达式
  • 心理咨询预约管理系统javaweb医院挂号jsp源代码mysql
  • Linux中安装Node
  • 爬虫011_元组高级操作_以及字符串的切片操作---python工作笔记030
  • JVM虚拟机篇
  • Flutter 让软键盘不再自动弹起
  • k8s 自身原理 1
  • 在CPU上安装部署chatglm-6b实用经验分享