P2 H264码流结构分析——Annexb与MP4格式的区别 (中)

前言

                             

从本章开始我们将要学习嵌入式音视频的学习了 ,使用的瑞芯微的开发板

🎬 个人主页:@ChenPi

🐻推荐专栏1: 《C++_@ChenPi的博客-CSDN博客》✨✨✨ 

🔥 推荐专栏2: 《Linux C应用编程(概念类)_@ChenPi的博客-CSDN博客》✨✨✨

🛸推荐专栏3:《嵌入式音视频_@ChenPi的博客-CSDN博客》
🌺本篇简介  :这章记录编解码的基础理论知识——H264的码流结构

这章我们以一下这个图来讲解H264的码流结构

这个图是我从网上找的 

我们按照这个层级关系来学

 

01 Annexb格式

Annexb 格式使用起始码来表示一个编码数据的开始。
起始码他本身不是图像编码的内容,只是用来分隔用的,
而且他是大多数编码器默认输出 的码流格式,它的基本数据单位为NAL 单元,也即 NALU
为了从字节流中提取出NALU ,协议规定,在每个 NALU 的前面加上起始码 。起始码有两
种,一种是 4 字节的 “00 00 00 01” ,一种是 3 字节的 “00 00 01”
这里需要注意一下,由于图像编码出来的数据中也有可能出现 “00 00 00 01” “00 00 01” 的数据。
那这种情况怎么办呢?为了防止出现这种情况
H264 会将图像编码数据中的下面的几种字节串做如下处理:
1 “00 00 00” 修改为 “00 00 03 00”
2 “00 00 01” 修改为 “00 00 03 01”
3 “00 00 02” 修改为 “00 00 03 02”
4 “00 00 03” 修改为 “00 00 03 03”

H264 比特流 = Start_Code_Prefix + NALU + Start_Code_Prefix + NALU + …
这里也说一下为什么需要起始码?
主要是为了将相邻两个 NALU 划分开,让他们有一个界线 , 方便解码,比如将 h264 的数据存储在一个文件当中,解码器无法从数据流中分别每个 NALU 的起
始位置。 

02 RTP格式(也叫MP4格式)

MP4 格式没有起始码,而是在图像编码数据的开始使用了 4 个字节作为长度标识,用来表示编码数据的长度,这样我们每次读取 4 个字节,计 算出编码数据长度,然后取出编码数据,再继续读取 4 个字节得到长度,一直继续下去就可以取出所有的编码数据了。
h264 的字节流格式,它是没有经过传输协议封装,所以也可以称他为裸流数据!
下一章我们重点讲解这个码流格式里面的 NALU 单元,也就是我们在本地拿到一个以 .264 格式的视频文件,我们首先去提取里面的 NALU ,这个才是重 点!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/292705.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图像畸变校正解决方案,无畸变的高质量视觉体验

摄像头已经成为我们生活中不可或缺的一部分。然而,由于摄像头的物理特性和环境因素,采集到的图像往往存在径向和切向畸变,导致画面扭曲,影响视觉效果。为了解决这个问题,美摄科技推出了一款先进的图像畸变校正解决方案…

亚洲诚信TrustAsia成功入选《第十四批上海市重点商标保护名录》

近日,为进一步加大注册商标专用权的保护力度,上海市知识产权局制定并发布了《第十四批上海市重点商标保护名录》,亚数信息科技(上海)有限公司(以下简称亚数)榜上有名,注册商标“亚洲…

健身俱乐部官网搭建的作用是什么

健身俱乐部是不少人常去场所,以会员和散客为主,这些场所在大城市商圈中较为常见也有很高的需求度,入局商家也比较多,但在实际经营中商家们也会不可避免的面临一些难题。 1、拓客难 健身俱乐部客群有一定年龄限制,同时…

面试高频的TCP知识点总结,比我想象得还要详细

下午好,我的网工朋友。 TCP 作为传输层的协议,了解它,拿下它,是一个网络工程师素养的体现,也是面试中经常被问到的知识点。 我们账号之前的文章里也写过不少关于TCP相关的文章,感兴趣的朋友们可以点击下方…

【数据结构】九、排序

目录 一、排序概述 二、插入排序 2.1直接插入排序 2.2折半插入排序 2.3二路插入排序 2.4表插入排序 2.5希尔排序 三、交换排序 3.1冒泡排序 3.2快速排序 四、选择排序 4.1简单选择排序 4.2锦标赛排序 4.3堆排序 五、归并排序 六、基数排序 七、总结 一、排序概述…

接口测试用例设计(超详细总结)

一、为什么要写接口测试用例? (1)理清思路,避免漏测和重复测试。 (2)提高测试效率、跟进测试进度、告诉领导做过、跟进重复性工作。 (3)更好的记录问题、发现问题、复现问题、同时…

在Latex中显示中文

推荐由overleaf提供的Latex学习材料:Chinese - Overleaf, Online LaTeX Editor 推荐使用XeLaTeX或者LuaLaTeX编译器(compilers),因为它们直接支持UTF-8编码文本并使用TrueType和OpenType字体。 目录 一、使用ctexart document类 (推荐使用…

24年5月软考软件设计师考哪些内容,考试大纲什么的?

一、考试方式和考点范围(如图) 上午题:只有单选题下午题:案例分析题 上午题:总分75分,45分及格,每题1分,共75题,考试知识点范围广,必考5分全英文题 下午题…

Baumer工业相机堡盟工业相机如何通过BGAPI SDK实现Raw格式的图像保存(C#)

Baumer工业相机堡盟工业相机如何通过BGAPI SDK实现Raw格式的图像保存(C#) Baumer工业相机Baumer工业相机通过SDK实现Raw格式的图像保存的技术背景通过SDK获取相机信息的代码分析Baumer工业相机回调函数里保存原始图像数据Baumer保存Raw图像格式重要核心代…

27、ResNet50处理STEW数据集,用于情感三分类+全备的代码

1、数据介绍 IEEE-Datasets-STEW:SIMULTANEOUS TASK EEG WORKLOAD DATASET : 该数据集由48名受试者的原始EEG数据组成,他们参加了利用SIMKAP多任务测试进行的多任务工作负荷实验。受试者在休息时的大脑活动也在测试前被记录下来,也包括在其…

15-deoxy-Δ12,14-PGJ2 ELISA kit

首款上市的15-d-PGJ2 ELISA试剂盒,可用于类花生酸研究 15-deoxy-Δ12,14-PGJ2(15-d-PGJ2)是PGD2的最终脱水产物之一,通过中间体Δ12-PGJ2形成。生理条件下,15-d-PGJ2存在于体液中,浓度介于10^(-12)至10^(-9…

Enge问题解决教程

目录 解决问题的一般步骤: 针对"Enge问题"的具体建议: 以下是一些普遍适用的解决问题的方法: 以下是一些更深入的Enge浏览器问题和解决办法: 浏览器性能问题: 浏览器插件与网站冲突: 浏览…