TS协议之PES(ES数据包)

news2025/1/20 5:53:48

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.coloradmin.cn/o/842942.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在 Ubuntu 上安装 Docker 桌面

Ubuntu 22.04 (LTS) 安装 Docker 桌面 要成功安装 Docker Desktop,您必须: 满足系统要求拥有 64 位版本的 Ubuntu Jammy Jellyfish 22.04 (LTS) 或 Ubuntu Impish Indri 21.10。对于非 Gnome 桌面环境,必须安装 gnome-terminal:…

springsecurity初稿

springsecurity 课程 课程目标 权限管理简介【了解】权限管理解决方案【掌握】初识Spring Security【了解】Spring Security 认证配置【掌握】Spring Security 鉴权配置【掌握】Spring Security 底层原理【掌握】Spring Security 退出操作【重点】Spring Security整合JWT【重…

参考RabbitMQ实现一个消息队列

文章目录 前言小小消息管家1.项目介绍2. 需求分析2.1 API2.2 消息应答2.3 网络通信协议设计 3. 开发环境4. 项目结构介绍4.1 配置信息 5. 项目演示 前言 消息队列的本质就是阻塞队列,它的最大用途就是用来实现生产者消费者模型,从而实现解耦合以及削峰填…

有什么好用的PNG素材网站吗?看看这6个

高品质PNG素材无疑能提升网站的质量,给用户带来更美好的使用体验,今天本文会与大家分享6个好用的PNG素材网站,一起来看看吧! 1、即时设计资源广场 即时设计资源广场集成了多种大厂素材,不只是PNG素材,还有…

试用AI生成代码工具Fauxpilot,详细安装过程

设置服务 预先说明 需要预先安装支持NVIDIA的docker,docker compose > 1.28不能再容器里运行,否则出现以下报错: rootc536ca0dbd64:/test/fauxpilot-main# ./setup.sh Checking for curl ... /usr/bin/curl Checking for zstd ... /opt/conda/bin…

Java-认识String

目录 一、String概念及创建 1.1 String概念 1.2 String的创建 二、String常用方法 2.1 String对象的比较 2.2 字符串查找 2.3 转化 2.4 字符串替换 2.5 字符串拆分 2.6字符串的截取 2.7 其他操作方法 2.8 字符串修改 三、面试题 一、String概念及创建 1.1 String概念 Java中…

PVE虚拟化平台之安装openKylin开源操作系统

PVE虚拟化平台之安装openKylin开源操作系统 一、openKylin介绍1.1 openKylin简介1.2 openKylin特性 二、下载openKylin系统镜像2.1 官方网址2.2 下载openKylin系统镜像 三、上传镜像到PVE存储3.1 检查PVE环境3.2 上传镜像 四、创建虚拟机4.1 设置虚拟机名称4.2 操作系统设置4.3…

【六袆 - 国际化】SpringBoot国际化Message

模拟场景校验请求参数 private void checkParam(List<ReqAppAdminDTO> req) {// 校验管理员如果已存在&#xff0c;则抛出已存在异常req.forEach(item -> {AppAdminDO appAdminDO appAdminMapper.selectByAppIdAndAdminNo(item.getAppId(), item.getAdminNo());if (O…

ubuntu上回环设备/dev/loop0占用100%清理

查看磁盘占用情况时&#xff1a; df -h/dev/loopn这些设备在Linux下被称为回环设备。 终端输入&#xff1a; sudo apt autoremove --purge snapd再次查看&#xff1a;

Android安卓实战项目(8)---自行车fitting计算软件(源码在文末)可用于比赛项目或者作业参考中

Android安卓实战项目&#xff08;8&#xff09;—自行车fitting计算软件&#xff08;源码在文末&#x1f415;&#x1f415;&#x1f415;&#xff09;可用于比赛项目或者作业参考中 【bilibili演示地址】 https://www.bilibili.com/video/BV1eu4y1B7yA/?share_sourcecopy_we…

常用抓包工具

Fiddler Fiddler 是一个很好用的抓包工具&#xff0c;可以用于抓取http/https的数据包&#xff0c;常用于Windows系统的抓包&#xff0c;它有个优势就是免费 Charles Charles是由JAVA开发的&#xff0c;可以运行在window Linux MacOS&#xff0c;但它是收费的&#xff0c;和…

大厂容器云实践之路(一)

1-华为CCE容器云实践 华为企业云 | CCE容器引擎实践 ——从IaaS到PaaS到容器集群 容器部署时代的来临 IaaS服务如日中天 2014-2015年&#xff0c;大家都在安逸的使用IaaS服务&#xff1b; 亚马逊AWS的部署能力方面比所有竞争对手…

有血有肉的PPT

1、PPT是Powerpoint缩写 2、引申的含义是Powerpoint Power(力量/能量&#xff09; Point(观点/要点) 3、用PPT做的文档是讲演稿&#xff0c;讲演的内容要有力度&#xff0c;之所以要去演讲是为了能够影响受众 4、其次演讲稿上的内容要列出要点、表明观点&#xff0c;所以一般P…

Java 并发容器和框架Fork/Join详解

目 录 一 使用场景 1 大规模数据处理 2 复杂计算 3 并行搜索 4 并行排序 二 Fork/Join框架介绍 三 Fork/Join框架模块 四 Fork/Join框架核心思想 1分治思想(Divide-and-Conquer) 2 work-stealing(工作窃取)算法 五 Fork/Join框架执行流程 1 实现原理&#xff1a; 2…

Vue3 第二节 Vue3的响应式

1.Vue3的响应式原理 2.ref函数和reactive函数的对比 3.setup注意点 一.Vue3的响应式原理 1.Vue2.x中的响应式原理 ① 实现原理 对象类型&#xff1a;通过Object.defineProperty() 对属性的读取&#xff0c;修改进行拦截&#xff08;数据劫持&#xff09;数组类型&#xf…

上位机是什么?有什么实际用途?

上位机是指控制、监测或管理下位机的计算机系统&#xff0c;也可以称为主机。它通常用于工业自动化、机器人控制、数据采集和处理等领域。在工业自动化中&#xff0c;上位机负责向下位机下发指令并获取反馈信息&#xff0c;以控制生产流程。在机器人控制中&#xff0c;上位机负…

详细教程:如何搭建废品回收小程序

废品回收是一项环保举措&#xff0c;通过回收和再利用废弃物品&#xff0c;可以减少资源浪费和环境污染。近年来&#xff0c;随着智能手机的普及&#xff0c;小程序成为了推广和运营的重要工具。本文将详细介绍如何搭建一个废品回收小程序。 1. 进入乔拓云网后台 首先&#xf…

Maven: ‘mvn‘ is not recognized as an internal or external command

下载并配置好Maven之后&#xff0c;CMD测试安装是否成功&#xff1a;mvn -v 提示&#xff1a; mvn is not recognized as an internal or external command, operable program or batch file. 检查环境变量&#xff1a; MAVEN_HOME: %MAVEN_HOME%\bin: 看上去没问题&#x…

pinctrl设备树节点映射详细分析imx_dt_node_to_map

pinctrl设备树节点映射详细分析imx_dt_node_to_map 文章目录 pinctrl设备树节点映射详细分析imx_dt_node_to_mapstruct pinctrl_mapreally_probepinctrl_bind_pinscreate_pinctrlpinctrl_dt_to_mapdt_to_map_one_configdt_remember_or_free_mappinctrl_register_map add_settin…

Linux网络服务之部署yum仓库

yum &#xff1f; yum ! 一、YUM概述1.1 yum简介1.2 yum工作原理 二、yum 配置文件2.1 yum主配置文件2.2 yum仓库设置文件2.2.1 配置文件主要格式2.2.2 软件仓库的提供方式2.2.3 日志文件 三、yum命令详解3.1 安装和升级3.2 查询3.2.1 显示可用的安装包 ----- yum list3.2.2 显…