当前位置: 首页 > 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。

相关文章:

TS协议之PES(ES数据包)

TS协议之PAT(节目关联表)TS协议之PMT(节目映射表)TS协议之PES(ES数据包) 该文档已上传:下载地址 1. 概要 1.1 TS数据包(PES)协议数据组成 TSTS头PES头ES。TS&#xf…...

银河麒麟V10 SP3 X86 二进制文件部署 mysql-5.7.29 GTID 半同步复制的双主架构

文章目录 [toc]啰嗦一下mysql 的 AB 复制和 gtid 复制的优缺点AB 复制(Asynchronous Replication)GTID 复制(Global Transaction Identifier Replication) mysql gtid 并行复制和半同步复制的优缺点并行复制(Parallel …...

python爬虫3:requests库-案例1

python爬虫3:requests库-案例1 前言 ​ python实现网络爬虫非常简单,只需要掌握一定的基础知识和一定的库使用技巧即可。本系列目标旨在梳理相关知识点,方便以后复习。 申明 ​ 本系列所涉及的代码仅用于个人研究与讨论,并不会对网…...

计算机网络 数据链路层 媒体接入控制

...

面部表情识别(Pytorch):人脸检测模型+面部表情识别分类模型

目录 0 相关资料1 基于人脸检测面部表情分类识别方法2 项目安装2.1 平台与镜像2.2 项目下载2.3 模型下载2.4 上传待测试图片2.5 项目安装 3 demo测试 0 相关资料 面部表情识别2:Pytorch实现表情识别(含表情识别数据集和训练代码):https://blog.csdn.net…...

外卖点餐小程序开源源码——支持扫码点餐

一套支持店内扫码点餐、外卖点餐配送于一体的餐饮系统,支持商家创建优惠券,支持商家自定义打印机功能,支持商家财务管理,支持商户菜品管理,支持菜品自定义分类,支持商家招募骑手入驻功能。系统基于thinkphp…...

十分钟掌握使用 SolidJS 构建全栈 CRUD 应用程序

我们可以开始讨论 SolidJS,说它比React更好,但没有必要做这种比较。SolidJS只是众多前端框架之一,旨在在Web上快速创建数据驱动。那么,我们为什么要突出这个新孩子呢? 首先,我们不能忽视SolidJS不使用虚拟…...

LabVIEW开发多材料摩擦电测量控制系统

LabVIEW开发多材料摩擦电测量控制系统 摩擦电效应是两个物体摩擦在一起,电荷从一个物体转移到另一个物体的现象,从而导致两个物体携带相等和相反的电荷。接触和充电是主导该过程的两个关键因素。当静电荷累积到一定水平时,可能会出现放电现象…...

【Linux】网络基础1

文章目录 网络基础11. 计算机网络背景1.1 网络发展 2. 认识协议2.1 网络协议2.2 OSI七层模型2.3 TCP/IP五层(或四层)模型 3. 网络传输基本流程3. 1 数据报封装和分用 4. 网络中的地址管理4.1 认识IP地址 5. 认识MAC地址 网络基础1 1. 计算机网络背景 1…...

HTML - Javascript - 原生的JS HTTP请求:实用主义的一篇文章

HTML - Javascript - 原生的JS HTTP请求:实用主义的一篇文章 前言 虽然现在使用JQuery等可以做到很方便的HTTP请求,但是这样做毕竟要引入一些JS文件。 如果想使用原生的JS进行HTTP网络请求应该怎样呢?可以使用XMLHttpRequest。 使用方法 …...

Intellij IDEA运行报Command line is too long的解决办法

想哭,vue前端运行起来,对应的后端也得起服务。 后端出的这个bug,下面的博客写的第二种方法,完整截图是下面这个。 ​​​​​​​​​​​​​​​​​​​​Intellij IDEA运行报Command line is too long的解决办法 - 知乎 (zh…...

信号槽传输过程中指针所指对象的生命周期

在子线程中的一个槽函数,当读取到dxf文件完成后,结果通过在该槽函数中的 dx_data* pDxfData 指针变量读取。 然后通过QVariant封装该指针变量。发送到主线程中。 void qcWorker::slotReadDxfFile(QString dir) {bool bRtn{ false }; //定义一个局部指针…...

c++ 递归锁的使用

非递归锁 同一个线程里&#xff0c;在锁未释放的情况下反复加锁&#xff0c;会导致死锁。 示例 #include <iostream> #include <mutex> #include <thread> #include <unistd.h> using namespace std;std::mutex m_mutex;void Func() {m_mutex.lock(…...

Oracle TDE wallet

1. 钱夹密码千万不能忘记&#xff0c;这也是使用TDE 需要承担的风险。 2. 只要将wallet cwallet.sso 拷贝过去&#xff0c;加密没有意义&#xff01; 钱夹的备份 正如上述&#xff0c;已经加密过的表列或者表空间&#xff0c;钱夹必须打开才能够查询到里面的数据。如果钱夹丢…...

多模态学习

一、目标 三、多模态核心任务 题目&#xff1a;...

Android学习之路(2) 文本设置

Android学习之路(1) 文本 一、设置文本内容 设置文本内容的两种方式&#xff1a; 一种是在XML文件中通过属性android:text设置文本代码如下 <TextViewandroid:id"id/tv_hello"android:layout_width"wrap_content"android:layout_height"wrap_c…...

手写springboot

前言 首先确定springboot在spring基础上主要做了哪些改动&#xff1a;内嵌tomcatspi技术动态加载 一、基本实现 1. 建一个工程目录结构如下&#xff1a; springboot: 源码实现逻辑 user : 业务系统2.springboot工程项目构建 1. pom依赖如下 <dependencies>…...

报错Uncaught (in promise) Error: Manifest request to...

在使用nuxt框架时&#xff0c;出现如下报错&#xff1a; 解决方案&#xff1a; 不要打开两个以上的开发者工具更换nuxt的端口号 参考资料&#xff1a;https://github.com/nuxt/nuxt.js/issues/6202...

微信私域更好玩了

之前分享过&#xff0c;“小绿书”“公众号文章转音频”等内测中或悄悄已升级的功能。 其实&#xff0c;微信还在内测很多新功能&#xff0c;只是没公开 今天&#xff0c;小编又发现新升级 就是『附近』功能 增加了一个本地生活的入口&#xff0c;这里面是短视频和图文 展示…...

基于ant-design的a-modal自定义vue拖拽指令

写一个dragDialog.js 在main.js中引入 import ‘./core/directives/dragDialog.js’ // 让 dialog 支持鼠标拖动 import Vue from vueVue.directive(DragDialog, {update: function (el, binding, vnode) {if (!binding.value || !binding.value.reset) returnconst dialog e…...

DE1-SoC实战指南:在Qsys/Platform中集成GHRD工程与扩展SPI外设——(de1教程2.5节)

1. 理解GHRD工程与Qsys平台 第一次接触DE1-SoC开发板时&#xff0c;最让我头疼的就是如何在HPS和FPGA之间建立高效通信。直到发现了GHRD&#xff08;Golden Hardware Reference Design&#xff09;工程这个宝藏&#xff0c;它就像乐高套装里的基础底板&#xff0c;提供了完整的…...

Fish Speech 1.5惊艳效果:中英混合文本语音合成真实案例分享

Fish Speech 1.5惊艳效果&#xff1a;中英混合文本语音合成真实案例分享 1. 语音合成技术的新突破 今天要给大家分享一个让我眼前一亮的语音合成技术——Fish Speech 1.5。这不是那种机械感十足的普通TTS&#xff0c;而是一个真正能说"人话"的智能语音合成模型。 …...

VMware Workstation Pro 25H2u1 发布 - 领先的免费桌面虚拟化软件

VMware Workstation Pro 25H2u1 for Windows & Linux - 领先的免费桌面虚拟化软件 基于 x86 的 Windows、Linux 桌面虚拟化软件 请访问原文链接&#xff1a;https://sysin.org/blog/vmware-workstation/ 查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&…...

Backbone:深度解析DLA中的迭代与分层聚合机制

1. 理解DLA的核心设计思想 第一次接触Deep Layer Aggregation&#xff08;DLA&#xff09;时&#xff0c;最让我困惑的是&#xff1a;为什么现有的网络结构需要新的聚合方式&#xff1f;经过几个项目的实践验证&#xff0c;我发现传统网络在特征融合方面存在明显短板。比如在做…...

Qwen2.5-14B-Instruct应用场景:像素剧本圣殿为播客联盟定制系列剧剧本生成系统

Qwen2.5-14B-Instruct应用场景&#xff1a;像素剧本圣殿为播客联盟定制系列剧剧本生成系统 1. 项目背景与价值 像素剧本圣殿&#xff08;Pixel Script Temple&#xff09;是一款基于Qwen2.5-14B-Instruct大模型深度优化的专业剧本创作工具。这款工具专为播客联盟的系列剧创作…...

Win11下JDK1.8和17双版本共存指南:5分钟搞定环境变量配置与快速切换

Win11下JDK1.8与17双版本共存实战&#xff1a;从配置到智能切换的全套解决方案 作为一名长期奋战在Java开发一线的工程师&#xff0c;我深刻理解同时维护新旧项目的痛苦。每次打开IDE前都要反复确认环境变量&#xff0c;或者在会议演示时突然发现项目跑在了错误版本上——这些场…...

从南向北:基于iot-gon的电力规约转换与数据贯通实践

1. 电力规约转换的痛点与iot-gon的解决方案 在电力自动化系统中&#xff0c;设备间的通信就像一群说着不同方言的人开会。变电站用IEC104、电表用DLT645、配电终端用Modbus——这种"语言不通"的情况会导致数据孤岛。我参与过某省电网调度系统改造项目&#xff0c;现场…...

泛微Ecology异构集成避坑指南:许可证(AppID)管理与安全配置的那些事儿

泛微Ecology异构系统集成安全实践&#xff1a;从许可证管理到防御体系构建 当企业数字化转型进入深水区&#xff0c;异构系统间的数据流通成为刚需。作为国内主流OA平台的泛微Ecology&#xff0c;其开放能力常被用于构建企业级应用生态。但我们在多个大型客户实施案例中发现&am…...

Qwen3-ASR-1.7B语音识别5分钟快速部署:Docker镜像+Web界面开箱即用

Qwen3-ASR-1.7B语音识别5分钟快速部署&#xff1a;Docker镜像Web界面开箱即用 1. 引言&#xff1a;为什么选择Qwen3-ASR-1.7B&#xff1f; 想象一下这样的场景&#xff1a;你刚结束一场重要的跨国会议&#xff0c;录音文件里混杂着英语、中文和印度口音。传统语音识别工具要么…...

如何在 Go 中构建支持持久化存储的权威 DNS 服务器

本文介绍如何基于 miekg/dns 库实现具备持久化能力的权威 dns 服务器&#xff0c;涵盖原生 zone 文件支持、外部存储集成方案&#xff08;如 etcd&#xff09;&#xff0c;以及实际部署注意事项。 本文介绍如何基于 miekg/dns 库实现具备持久化能力的权威 dns 服务器&…...