h264文件视频存储格式和音频存储格式

article/2025/9/25 11:48:22

mp4封装
目录
h264视频流格式介绍
aac音频流格式介绍
h264视频文件读取
通过帧索引解析h264文件
通过解析h264结构读取文件
aac音频文件读取
mp4封装
初始化
数据封装
关闭mp4文件句柄
注意点
目录
h264视频流格式介绍
视频数据帧分为I帧,P帧,B帧,其中I帧为关键帧,所包含的图像信息最全,因而数据量最大,其他帧都有I帧通过计算而来

H264网络传输的结构

 

NALU头结构
长度:1byte
forbidden_bit(1bit) + nal_reference_bit(2bit) + nal_unit_type(5bit)

a) 位信息

bit    desc
F    禁止位,0表示正常,1表示错误,一般都是0
NRI    重要级别,11表示非常重要,一般取值为11、10、01
Type    nal_unit_type(表示该NALU的类型是什么,类型的具体取值可见下表)
b) nal_unit_type

nal_unit_type    0    1    2    3    4    5    6    7    8    9    10    11    12    13-23    24-31
NAL类型    未使用    非IDR的片    片数据A分区    片数据B分区    片数据C分区    一个序列的第一个图像叫做IDR图像(立即刷新图像),IDR图像都是I帧    补充增强信息单元(SEI)    序列参数集(SPS)    图像参数集(PPS)    分界符    序列结束    码流结束    填充    保留    未使用
c) H264要求I帧为:帧分隔符+SPS+帧分隔符+PPS+帧分隔符+IDR

帧分隔符    SPS    帧分隔符    PPS    帧分隔符    IDR
0x00 00 01    0x67…    0x00 00 01    0x68…    0x00 00 01    0x65…
d) NALU start-code:0x00 00 00 01/0x00 00 01

H264 AVCC格式
a) Annex-B:没有NALU长度字节,使用start code分隔NALU,start code为三字节或四字节,0x000001或0x00000001,一般是四字节;SPS和PPS按流的方式写在一组GOP之前。
b) AVCC:使用NALU长度,固定字节,通常为4字节,分隔NALU;一般在每个NALU头部为4字节大端格式的长度字节,在一组GOP的头部包含extradata结构,用于存储sequence-header、SPS、PPS数据。
c) 虽然AVCC格式不使用起始码,防竞争字节仍然存在
d) SPS和PPS被存储在了非NALU包中(out of band带外),即独立于基本流数据
e) mp4文件即是采用这种存储方式

 

aac音频流格式介绍
aac有9中规格(LC/Main/SSR/LD…),LC为常用规格

aac文件格式有两种ADIF,ADTS

a) ADIF:头信息只在文件首部,解码必须在首部开始,获取头信息后,剩余全是音频数据
b) ADTS:每一帧都含有头信息,解码可以在任意位置


ADTS的头信息为两部分组成,其一为固定头信息,紧接着是可变头信息
a) adts固定头结构

b) adts可变头结构


adts头字段含义
a) syncword:同步字,一般为二进制"1111 1111 1111",用于找出帧头在比特流中的位置
b) ID:MPEG 标示符
c) layer:指示使用哪一层
d) protection_absent:表示是否误码校验
e) profile:表示使用哪个级别的AAC,如01:Low Complexity(LC)即为AACLC
f) sampling_frequency_index:表示使用的采样率下标,如下图

g) channel_configuration:声道数

0x00    0x01    0x02    0x03    0x04    0x05    0x06    0x07    0x08-0x0f
单声道    双声道    三声道    四声道    五声道    5.1声道    7.1声道    保留    
h) aac_frame_length:aac一帧数据大小,一个ADTS帧的长度包括ADTS头和raw data block
i) adts_buffer_fullness:是否是码率可变码流(0x7FF:可变)
j) number_of_raw_data_blocks_in_frame:表示ADTS帧中有number_of_raw_data_blocks_in_frame + 1个AAC原始帧,
所以说number_of_raw_data_blocks_in_frame == 0 表示说ADTS帧中有一个AAC数据块并不是说没有

h264视频文件读取
h264文件读取有两种方式:通过帧索引和通过解析h264结构

通过帧索引解析h264文件
所谓帧索引即是通过专门软件将h264文件中每一帧的信息做成索引存储在一个文件中,索引文件需要存储的信息有:

每一帧的地址(在源文件中的位置)
每次都从对应地址开始读取本帧数据
每一帧的数据大小
帧格式
需要表明是否为I帧
时间戳
该方法比较简单,在此不做赘述

通过解析h264结构读取文件
h264文件每一帧都由分隔符隔开,分隔符或为0x00,0x00,0x00,0x01,或为0x00,0x00,0x01,解析时遇分隔符即为一帧起始,两个分隔符之间的即为一帧数据,紧跟分隔符的是该帧类型。


aac音频文件读取
adts头部信息包含一帧音频数据的大小,该大小包含7字节的头部,因此实际数据需要跳过头部读取,相应大小也应减去7。


 


http://chatgpt.dhexx.cn/article/b8UWUy1B.shtml

相关文章

H264和h265编码

未压缩的码流:一秒钟码流大小:640x480x1.5x15x855296000 (是55MB)其中 1.5是yuv占用1.5倍,rgb是3倍,8是一个字节是八位bit H264的建议码流是500kpbs,因此压缩比是100 电影一般帧率大于60帧;在线教育,实时通信一般是15帧 工具使…

H264格式 详细介绍

原文地址:http://blog.csdn.net/yangzhongxuan/article/details/8003494 名词解释 场和帧 : 视频的一场或一帧可用来产生一个编码图像。在电视中,为减少大面积闪烁现象,把一帧分成两个隔行的场。 片: 每个图象中&…

H264码流格式

h264码流格式 码流格式 …NAL头RBSPNAL头RBSPNAL头RBSP… H264 传输 SPSSEIPPSI片图像定界符P片P片 NAL头格式 start code ( 3 or 4 )forbidden_zero_bit(1)nal_ref_idc (2)nal_unit_type( 5)RBSP 解释 start code&#xf…

H264H265格式

文章目录 H2641. NALU1.1 NALU Header1.1.1 nal_unit_type 2. 码流格式2.1 Annex B格式2.2 AVCC格式2.2.1 extradata结构 2.3 H264 Annexb与AVCC格式转换 3. 视频编码帧3.1 压缩方式3.2 编码帧3.3 丢帧 4. PTS与DTS4.1 概念4.2 为什么需要PTS,DTS? H2651…

音视频——视频流H264编码格式

1 H264介绍 我们了解了什么是宏快,宏快作为压缩视频的最小的一部分,需要被组织,然后在网络之间做相互传输。 H264更深层次 —》宏块 太浅了 ​ 如果单纯的用宏快来发送数据是杂乱无章的,就好像在没有集装箱 出现之前,…

H264编码简介

H264编码简介 H.264,同时也是MPEG-4第十部分,是由ITU-T视频编码专家组(VCEG)和ISO/IEC动态图像专家组(MPEG)联合组成的联合视频组(JVT,Joint Video Team)提出的高度压缩…

H264格式

原文地址:http://blog.csdn.net/yangzhongxuan/article/details/8003494 名词解释 场和帧 : 视频的一场或一帧可用来产生一个编码图像。在电视中,为减少大面积闪烁现象,把一帧分成两个隔行的场。 片: 每个图象中…

H264格式解析

H264码流有两种形式:Annex B和AVCC。这两种码流形式所对应不同的编码方式和格式解析。 Annex B中每个NALU中没有存储NALU长度字节 AVCC中每个NALU中存储了长度信息 H264编码分为两层:vcl和nal vcl:编码nal:网络传输 Annex B的编…

H264编码基础概念+格式分析

一、编码基础概念 1、为什么要进行视频编码? 视频是由一帧帧图像组成,就如常见的gif图片,如果打开一张gif图片,可以发现里面是由很多张图片组成。一般视频为了不让观众感觉到卡顿,一秒钟至少需要16帧画面&#xff08…

H264编码格式--图文解释

一、H264格式 RBSP SODB RBSP trailing bits NALU NAL header(1 byte) RBSP H.264 Start Code Prefix(3 bytes) NALU Start Code Prefix(3 bytes) NALU … H.264从层次来看分为两层:视频编码层(VCL, Video Coding Layer&#xf…

【音视频基础】H264格式分析

介绍 H264是基于运动补偿的视频编码标准。所谓编码我的理解就是对数据进行压缩便于网络传输。而视频编码就是依据图像帧的像素块之间的相似性对图像进行压缩。 相关概念 H264结构中,一幅图像编码后的数据叫一帧,一帧由一个或多个Slice片组成&#xff…

h264粗略理解

奔着学习的态度,借此试用期要输出文档,把h264的格式和相关知识深入梳理一下。 流媒体分析工具:Elecard StreamEye 一、h264认识 h264是一种视频编码标准,跟常见的视频格式不属于同一类。H.264同时也是MPEG-4第10部分规范(ISO/IEC…

H264简介

H.264是国际标准化组织(ISO)和国际电信联盟(ITU)共同提出的继MPEG4之后的新一代数字视频压缩格式。H.264是ITU-T以H.26x系列为名称命名的视频编解码技术标准之一。H.264是ITU-T的VCEG(视频编码专家组)和ISO…

阿里云单位网站备案承诺书填写(单位/个人)

阿里云单位网站备案承诺书填写 第一个填写「阿里云计算有限公司」 第二个填写公司所在省份/直辖市「深圳市」

个人网站备案很麻烦

看到这么多网站备案的是材料,我放弃了。怪不得大家都往国外跑。 租个香港(比如www.smartvps.cn)或则美国的亚马逊都可以,免了备案的麻烦。 弄个香港的虚拟主机配了下,没有问题。 搭建指南: http://blog.cs…

wordpress 搭建的博客: 增加网站备案信息

问题描述 使用阿里云的主机,搭建了一个基于wordpress的博客,因为注册的域名是.com,需要网站开启后,增加网站备案的信息搭建好 wordpress 博客后,发现没有地方配置【网站备案信息】 主题 我使用的是 wordpress 的一个…

个人备案的网站能放企业服务器吗,个人及企业域名备案对网站有什么影响

工信部规定,如果想使用中国境内的服务器建站,必须将网站域名进行备案。理论上说,域名备案制度可以在某种程度上减少违法网站的数量。但是那些一心想干坏事的互联网人总会找到各种空子来逃避这个备案制度。所以,个人感觉这个制度是…

在网站底部附上网站备案号

前置条件 备案号已申请通过。本文举例的网站是在腾讯云申请的服务器和域名,管局备案成功后,在全国互联网安全管理服务平台http://www.beian.gov.cn成功备案的。 步骤一 全国互联网安全管理服务平台http://www.beian.gov.cn 你的对应备案联网信息地址为…

【服务器搭建个人网站】教程六:网站如何添加备案号?

前言 哈喽,大家好,我是木易巷! 上一篇服务器搭建教程是给大家介绍了:关于域名公安备案的具体流程 今天分享在域名备案审核通过后,网站如何添加备案号? 为什么要在网站添加备案号? 根据工信部…

个人备案网站不能做博客了?

2020年3月1日开始执行了新的《网络信息内容生态治理规定》,作为自媒体的者想必都看到了,为了避免误伤,必须要遵守的。其实在,2019年底,还有一条对个人备案网站的规定,那就是个人备案的网站不能做博客了。 …