PTP Payload Format for MPEG-4 Elementary Stream

Android9超过2G升级包无法升级问题排查与解决方案 metadata数据中的偏移量与升级包实际的偏移量对不上,这个偏移量其实指的是压缩包内文件数据(payload.bin)在文件(升级包)中的偏移量。系统打包的时候会将这个偏移量解析出来写在metadata中,而update_engine会根据metadata文件中定义的这个偏移量提取payload.bin,并判断payload.bin的前4个字节是不是’CrAU’,如果提取出来的payload.bin的前4个字节与’CrAU’不匹配,则证明偏移量错误,导致提取的payload.bin文件不正确; 阅读详情

1.  说明

本文的目的是描述 MPEG4 Video ES 在 RTP 中的传输格式,本文的主要内容参考了 RFC-3016 和 RFC-3640 ,写作本文是为了帮助理解这两篇 RFC 的内容。如果描述有与这两篇 RFC 不一致的地方,应该以 RFC 为准。

 

2.  MIME Format

在 RFC-3016 和 RFC-3640 中,建议 MPEG4 ES 的信息描述遵循 MIME 的格式,关于 MIME 格式的详细信息,请参考 RFC­-2045 和 RFC-2046 。

 

3.  RTP Payload Format

(1)      Global Structure

            +---------+-----------+-----------+---------------+
         | RTP     | AU Header | Auxiliary | Access Unit   |
         | Header  | Section   | Section   | Data Section  |
         +---------+-----------+-----------+---------------+

 

  RTP Header 就是 RTP 协议所定义的 RTP 信息格式

  AU Header Section , Auxiliary Section , Access Unit Data Section 就是 RTP 的 Payload

从 MPEG4 Encoder 输出的每个 Packet , 被称为 Access Unit , 简写成 AU , AU Header 就是描述 AU 信息的标准格式。

Auxiliary Section 是用来描述一些辅助信息的,在 RFC 中, 这个结构没有被定义,可以由用户来自定义这块内容,也可以完全忽略。

Access Unit Data Section 就是 MPEG Encoder 的输出内容

 

(2)      RTP Header 中与 MPEG4 Payload 相关的部分

Payload Type (PT)  关于 RTP Payload 的类型 应该定义 MPEG4 类型, 这部分应该由 RTP 协议来定义, 于本文无关。

 

Marker Bit (M) 如果 RTP Payload 是完整的 1 个或多个 AU ,M = 1 ; 如果 RTP Payload 是 AU 的碎片 ( Fragment , 意指一个 AU 被分割成多个 RTP Packet 的 Payload ) , 只有最后一个 碎片的 M = 1, 其他碎片的 M = 0 。

             

(3)      The AU Header Section

      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- .. -+-+-+-+-+-+-+-+-+-+
      |AU-h-length|AU-header|AU-header|       |AU-header|padding|
      |           |   (1)   |   (2)   |      |   (n)   | bits  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- .. -+-+-+-+-+-+-+-+-+-+

 

AU-h_length  就是 AU-Header_Length  , specifies the length in bits
   of the immediately following AU-headers, excluding the padding bits.
 
AU Header  , 每个AU Header 是与 Access Unit( 或者是 AU Fragment) 相对应的。
Padding Bits 是为了让 AU Header Section 的长度(bits) 是 8 的整数倍

 

(4)      AU Header 的格式

 

  +---------------------------------------+
      |     AU-size                            |
      +---------------------------------------+
      |     AU-Index / AU-Index-delta         |
      +---------------------------------------+
      |     CTS-flag                          |
      +---------------------------------------+
       |     CTS-delta                         |
      +---------------------------------------+
      |     DTS-flag                          |
      +---------------------------------------+
      |     DTS-delta                         |
      +---------------------------------------+
      |     RAP-flag                          |
      +---------------------------------------+
     |     Stream-state                      |
      +---------------------------------------+

   

AU-Size : 就是指 与 AU Header 对应的那个 Access Unit 的长度 , in octets 。

如果在 RTP 包中的 Payload 是 AU Fragment , AU-Size 也应该是完整的 AU 的长度,

不应该是 Fragment 的长度,在接受段, 可以看接受到的 AU 的长度是不是跟 AU Header 中定义的 AU-Size 一致, 来判断这个 AU 是一个完整的单元 还是只是碎片。并且可以通过这个字段来判断接受到 Access Unit 是不是完整。

 

AU-Index : 就是 Access Unit 或者 AU Fragment 的 serial number 。相邻的两个 AU ( Fragment ) , 应该是 AU-Index[n+1] = AU-Index[n] + 1 。

如果一个 RTP Packet 中包含多个 Access Unit , 那第一个 AU Header 必须有 AU-Index 字段,接下来的几个 AU-Header 则不允许有 AU-Index 字段,而是用 AU-Index-Delta 字段来取代。

 

AU-Index-Delta : AU-Index-Delta 是根据上一个 AU-Index 的值来计算当前的 AU-Index 。计算公式为 AU-Index[n+1] = AU-Index[n] + AU-Index-Delta + 1 , 所以通常情况下 , AU-Index-Delta 应该是零, 如果 AU-Index-Delta 的值不是零,则说明在 RTP Packet 封装的时候使用了 Interleave 模式, 关于 Interleave 模式, 我们以后再来解释。

 

CTS-Flag : 1 表示接下来的数据是 CTS , 0 表示没有 CTS

CTS : the composition time stamp 。
DTS-Flag : 1 表示接下来的数据是DTS , 0 表示没有DTS
DTS:  the decoding time stamp
 
RAP-Flag:  1 表示对应的 Access Unit 是一个 Random Access Unit , 也就是所谓的 key-packet 。
如果 对应的是 Access Unit Fragment , 那么只有第一个Fragment 的RAP-Flag 的值是1, 其他Fragment 的值应该是 0 。
 
Stream-state :  表示编码器状态。如果编码器状态改变,这个值+1 。
RFC 中没有明确说明这个状态指那些内容, 我估计应该是resolution , fps, bps 等参数的改变吧 。

   

(5)       The Auxiliary Section

       +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- .. -+-+-+-+-+-+-+-+-+
      | auxiliary-data-size   | auxiliary-data       |padding bits |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- .. -+-+-+-+-+-+-+-+-+

 

这部分内容没有定义, 如果有用户数据 , 可以考虑把用户数据放入 Auxiliary Section 。

 

(6)       Access Unit 

   

  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- .. -+-+-+-+-+-+-+-+-+
  | AU(1)  | AU(2)  | AU(3) | … | AU(n)
  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- .. -+-+-+-+-+-+-+-+-+

 

     所以 Access Unit 就是 MPEG4 编码器的输出了。

 

4.  关于 RTP Packet 的封装

RTP Payload 允许装载 1 个或多个完整的 Access Unit

也允许装载 1 个 Access Unit Fragment

禁止把完整的 Access Unit 和 Access Unit Fragment 封装在同一个 RTP Packet 中。 禁止把多个 Access Unit Fragment 封装在 RTP Packet 中 。

通常来说 , RTP Packet 的顺序应该跟 Access Unit 的顺序一致 , 除非是 Interleave 模式下 。 关于 Interleave 模式请参看 相关的 RFC , 这里就不多做阐述了 。

  

        Reference

[1] RFC-3016

[2] RFC-3640

[3] ISO/IEC 14496 Part 2

[4] RFC-2045

[5] RFC-2046

[6] RFC-1889

[7] RFC-3550

 


附注: 这是我在07年的一篇旧文, 最早发在volvet.blogbus.com上,  但是blogbus发生严重事故, 我的文字大部分都丢失了. 所幸这篇文字有人转载, 从网上找回, 发到优快云.  

Android OTA升级踩坑实录:UpdateEngine魔数校验失败与OverlayFS冲突的完整解决流程 本文详细解析了Android OTA升级过程中遇到的UpdateEngine魔数校验失败和OverlayFS冲突问题,提供了从日志分析到源码定位的完整解决方案。通过Python脚本修正和adb命令操作,帮助开发者高效解决跨版本升级中的典型错误,提升OTA升级成功率。 阅读详情

相关推荐

ptp与ntp时间戳专题讲解

在二次开发ntp和ptp模块的时候,会有将系统时间转换为ptp时间或者ntp时间,一般初学者会比较迷糊,现将其总结如下 1         Linux时间结构 获取linux系统时间一般有两个函数,获取us级的时间函数和获取ns级的时间函数。一般linux系统时间整数秒从1900年0时0分0秒开始计时,在ptp中启示也是这个值,但是在ntp整数秒计数起时是1970年0时0分0秒,所以在将系统

TechFelix的专栏 1万+

AES67和Dante 混合系统环境下的系统配置(无DDM)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、交换机的配置二、使用步骤1.引入库2.读入数据总结参考文献: 前言 提示:在广电和AV融合系统中,可能会经常遇到AES67设备与Dante设备的混合环境。我们如何配置交换机,AV设备,让PTP时钟,AES67的组播流可以稳定传输。 本文在一定的实践,经验基础上跟大家分享下配置的经验。 提示:以下是本篇文章正文内容,下面案例可供参考 一、交换机的配置 如果大家是广电或者 示例:pandas 是基于NumPy 的一种工具,该

wubo1981的博客 7322

主频和时钟配置实验 - 时钟树

内部bootrom主频配置为396MHz,但6U有其它频率,如528/800MHz,频率更高,性能更高。 时钟来源于晶振。 32.768KHz的晶振,供给RTC使用。6U内部有RTC单元。这里的32.768khz不会供给整个系统使用。 24MHz的晶振,接到XTAL1,位于6U的T16/T17引脚上。整个6U系统时钟由这24MHz时钟提供。 系统不同部件使用的时钟不同,这些时钟都是由这24M晶振倍频而来。 7路PLL生成各种时钟。 ARMPLL,供给ARM内核使用 ..

我思故我在! 720

PTP Payload Format for MPEG-4 Elementary Stream(YC)

PTP Payload Format for MPEG-4 Elementary Stream(YC)版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明http://volvet.blogbus.com/logs/7986021.html    1.  说明 本文的目的是描述MPEG4 Video ES在RTP中的传输格式,本文的主要内容参考了RFC-

stone_kingnet的专栏 1298

Android Update Engine分析(七) DownloadAction之FileWriter

Android Update Engine分析(七) DownloadAction之FileWriter 本系列到现在为止的共有六篇,分别分析分析了Makefile,Update Engine的客户端、服务端及Action机制的细节: Android Update Engine分析(一)Makefile Android Update Engine分析(二)Protobuf和AIDL文件 Andr......

洛奇看世界 9432

MPEG相关文档 (MPEG1,MPEG2,MPEG4)

MPEG1,MPEG2,MPEG4,等等标准的官方文档。官网上下载是要收费的。

音频引擎模块拆解:5大关键组件及其在实时通信中的应用

深入解析音频引擎的模块构成,揭示5大核心组件在实时通信中的协同机制与优化策略。涵盖回声消除、降噪、音质增强等关键技术,提升语音交互体验。适用于视频会议、直播等场景,值得收藏。

BytePerch的博客 790

手把手式介绍 ADNI 影像数据下载

1.搜索 1.1登录 打开ADNI的官网:http://adni.loni.usc.edu/,进入下面的界面。 点击 DATA&SMPLES 下的 ACCESS DATA AND SAMPLES,如下图。 页面跳转以后点击中间的“LOGIN”,这时会跳出一个新的界面,然后在右上角输入自己的帐号、密码即可。如果没有权限可以跳转到第2部分看看如何申请权限。 登录以后选择DOWNLOAD下的 Image Collections就是搜索下载影像数据,其他还有一些学习测试数据和遗传数据。 1.2 sea

永远想不起来更新的博客 1万+

负载类型为 MPEG-4 Elementary Stream 的 RTP 包的封包讲解

转自http://blog.youkuaiyun.com/newthinker_wei/article/details/8997443 1.  说明 本文的目的是描述MPEG4 Video ES在RTP中的传输格式,本文的主要内容参考了RFC-3016和RFC-3640,写作本文是为了帮助理解这两篇RFC的内容。如果描述有与这两篇RFC不一致的地方,应该以RFC为准。   2.  MIME

qingkongyeyue的博客 1326

VoLTE吞字断续优化方案

网络侧通过各节点探针的数据采集,能够进行RTP和RTCP包的分析,确定各节点的上行或下行丢包情况。1.基于测试语音分析,每2秒中大约8个字,每个字约10个RTP语音包。通话过程中,语音有短暂停顿,收音段听语音中会出现“吞字/断续现象”2.连续丢3~5个RTP以上就可能会出现吞字断续的感觉。下行评价的丢包问题,很难有效指导定界定位分析,无从下手。2.部分终端可能存在RTCP不反馈,导致无法获取丢包。1.语音包为UDP包,无反馈,终端无法判定是否丢包。终端可依据自身的调度反馈或弃包进行上行丢包判决。

m0_73503557的博客 1513

RedVQA:轻量级无参考视频质量评估算法原理与工程实践

视频质量评估是计算机视觉领域的关键技术,旨在通过算法自动量化视频的观看体验。其核心原理在于模拟人眼视觉系统,从像素数据中提取并融合空域和时域特征,以预测主观质量分数。这项技术的价值在于,它能自动化处理海量视频内容的质量监控,为流媒体服务、移动设备影像优化等场景提供关键指标。无参考视频质量评估作为该领域的前沿方向,无需原始无损视频作为参考,更贴合实际应用。本文以RedVQA项目为例,深入剖析了如何利用轻量化的深度网络架构,如MobileNetV3,结合高效的时空特征融合模块,在保证评估精度的同时,大幅降低计算

weixin_28698129的博客 575

NTP协议

NTP(Network Time Protocol,网络时间协议)是由RFC 1305定义的时间同步协议,用来在分布式时间服务器和客户端之间进行时间同步。NTP基于UDP报文进行传输,使用的UDP端口号为123。 使用NTP的目的是对网络内所有具有时钟的设备进行时钟同步,使网络内所有设备的时钟保持一致,从而使设备能够提供基于统一时间的多种应用。 对于运行NTP的本地系统,既可以接收来自其他时钟

coffeehuan的专栏 1932

人形机器人系列——硬件介绍

人形机器人是多领域交叉技术的产物,主要由三大系统组成:感知系统、决策系统和执行系统。感知系统感知系统是人形机器人获取外界信息的途径,主要由各种传感器组成。其中,视觉传感器用于获取图像信息,如摄像头、激光雷达等;触觉传感器用于感知触碰和压力,如力/力矩传感器、声学传感器等。这些传感器收集到的信息为机器人的决策和执行提供基础。决策系统决策系统是人形机器人的大脑,负责处理和决策各种信息。它由芯片和算法组成。芯片是硬件基础,提供计算能力;算法是软件基础,用于处理和分析传感器收集到的信息,并做出相应的决策。执行系统。

liangwqi的博客 1万+

[mpeg4]mpeg4码流分析

基于内容的AV编码 以前AV信息被看作纯粹的数据,编码时没有结合自身包含的内容,例如视频序列被认为是象素的组合。MPEG-4采用了对象的概念,不同的数据源被视作不同的对象,分别编码。数据的接收者不再是被动的,他可以对不同的对象进行自己的操作:删除、添加、移动等。语音、图像、视频等可以作为单独存在的对象,也可以集合成一个更高层的对象,我们称之为场景。举例说明,MPEG-4在编码前首先要对视频序列进

ss0429的专栏 2889

Python爬虫实战:2026最新版淘宝商品详情页数据抓取与价格监控

在2026年的今天,电商数据已经成为商业决策、市场分析和价格策略制定的核心资产。淘宝作为中国最大的电商平台之一,其商品详情页包含了海量有价值的信息:商品标题、价格、销量、评价数、店铺信息、SKU属性等。对于从事电商运营、竞品分析、价格监控的从业者来说,能够高效、稳定地获取这些数据至关重要。然而,淘宝平台的反爬虫策略在2026年已经演进到了相当成熟的阶段。

2201_76125261的博客 891

Yolo11改进:Block改进|MixDehazeNet,用于图像去雾网络的混合结构块|即插即用|附代码

https://arxiv.org/pdf/2305.17654 图像去雾是低级视觉领域中的一项典型任务。先前的研究验证了大型卷积核和注意力机制在去雾中的有效性。然而,存在两个缺点:引入大型卷积核时容易忽略图像的多尺度特性,而注意力模块的标准串联方式没有充分考虑雾分布的不均匀性。在本文中,我们提出了一种名为混合结构图像去雾网络(MixDehazeNet)的新型框架,该框架解决了上述两个问题。具体而言,它主要由两部分组成:多尺度并行大型卷积核模块和增强并行注意力模块。与单个大型卷积核相比,多尺度的并行大型卷积

m0_47867638的博客 1273

insmod: error inserting : -1 Invalid module format 解决办法

当最初开始LDD编程时,经常会碰到这种情况,下载编译的内核源代码和当前正在运行的内核不一样。 第一阶段有时候你下载的内核版本相对正确,但却仍然不能insert成功,这有另一方面的东西要check:1. gcc的版本,比较:cat /proc/version和gcc -v2. 内核config的比较,在关键的选项上不能相左当前内核config:/lib/m

1万+

流体动力学仿真软件:XFlow_(16).案例研究:热传输与相变

包括密度、比热容、热传导系数等。

kkchenjj的博客 722

TSN(时间敏感网络)测试、仿真、分析平台应用攻略:TSN 验证及测试环境概述 | TSN应用场景 | 残余总线仿真 | ADAS/无人驾驶领域时间分析/测试

前言 在汽车领域,近几年车内网络通讯方式的变革诉求,期望能够有更高的数据传输速率,以及保证实时性的通讯方式引入。例如对于ADAS而言,传统的CAN总线已经远远不能满足其对通讯的要求,而基于车载以太网的TSN网络是一个更好的解决方案,它在保证传输带宽的同时,也保证了数据的时序、极低延时和可靠性。 之前两期,我们已经对TSN协议族中的关键协议、常用协议等内容作了说明(点此回顾>>),也介绍了实现TSN时间敏感网络分析与测量的工具平台(点此回顾>>),本期我们将为您介绍TSN 测试平台的一

Polelink北汇信息的博客 6076

【OpenClaw从入门到精通】第63篇:A股智能分析实战——用OpenClaw搭建个人量化研究助手(2026实测版)

2026年,OpenClaw已成为量化投研圈的现象级工具,八家头部券商密集发布专题研报力证其价值。传统量化投研面临技术门槛高、重复劳动多、策略迭代慢、非结构化数据处理弱四大痛点,而OpenClaw通过“AI智能体+金融Skill+量化API”的融合,实现了从数据获取、策略生成、回测验证到持仓监控的全流程自动化。本文基于2026年最新实测经验,完整呈现个人量化研究助手搭建:从阿里云部署、阿里云百炼API配置(含解析失败解决方案)、Tushare数据源接入,到PB-ROE价值选股、研报复现、自动化回测、持仓监控

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1059

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

PTP移植笔记十:LWIP与PTP的关系

用观察者模式重新实现了PTP的主控制循环:在循环中不断调用PTP的各个部分(已全部重新编写)处理函数,当发现有输出数据后,在最外部循环中调用LWIP的函数。 LWIP本身为嵌入式的编写方式,所以使用起来不太方便,因为需要把代码嵌入到LWIP的框架里面。 但是LWIP本身的代码简单易懂,弥补上面的不足,因为可以利用LWIP的代码编写一个新的协议栈,避免嵌入式的缺点。 嵌入式的一大缺点就是无法把驱动...

u011226925的博客 4193

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

MPEG4码流格式分析

参考: MPEG4码流简单分析:http://blog.youkuaiyun.com/axdc_qa_team/article/details/4042762 关于MPEG4 码流(mpeg4 raw data)的格式分析:http://blog.youkuaiyun.com/vblittleboy/article/details/6695973 mpeg4 码流格式:http://blog.csdn.ne

sunnylgz 2万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

PTP 和 MTP

PTP:   图片传输协议的 缩写,全称为:picture transfer protocol; PTP是最早由柯达与微软协商制定的一种标准,符合这种标准的图像设备在接入Windows XP系统之后可以更好地被系统和应用程序所共享,尤其在网络传输方面,系统可以直接访问这些设备用于建立网络相册时图片的上传、网上聊天时图片的传送等。   MTP:   媒体传输

Cxiaolinxiaozi的专栏 9397

略谈OpenGL中的共享上下文(EGL Context)

OpenGL渲染中有一个线程相关的上下文(EGL Context), OpenGL所创建的资源, 其实对程序员可见的仅仅是ID而已, 其内容依赖于这个上下文, 有时候为了方便起见, 在某个线程中创建了上下文之后, 所有的OpenGL操作都转到此线程来调用. 这样在简单的2d/3d 渲染中尚可, 但是如果涉及复杂的OpenGL渲染时, 这样就未必妥当. 举例来说, Google 为A

闲敲棋子落灯花 1万+
下一篇: Introduction to RTP Proxy (1)
volvet
博客等级 码龄18年 129粉丝 83原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值