AVI封装
RIFF:标识文件类型,通常以 文件总长度:文件总长度,通常设置为 AVI:标识文件类型为 AVI 文件,最后有一个空格。 LIST:标识文件的第一个列表块(list0),用于存储文件的其他信息。 list0 长度:list0 的长度,不能为 hdrl:视频头信息,包含视频的基本参数。 avih:视频信息头,包含视频的详细参数,如帧率、视频尺寸等。 list1:第二个列表块,存储视频和音频流的信息。 JUNK:垃圾数据块,用于确保文件长度为 16 的倍数。
发布日期:2025-06-08 11:51:01
浏览次数:7
分类:精选文章
本文共 2216 字,大约阅读时间需要 7 分钟。
AVI 文件格式详解
AVI(Audio Video Interleaved,音视频交错文件)是 Microsoft 推出的 RIFF(Resource Interchange File Format)文件格式,广泛应用于视频编码、编辑及播放领域。AVI 文件通常包含多个数据流,其中最常见的组合是音频流和视频流。尽管有些 AVI 文件仅包含视频流而不需要音频流,但大多数情况下它们都需要同时包含这两种类型的数据流。
AVI 文件格式结构
AVI 文件的基本结构遵循 RIFF 文件格式规范,具体结构如下:
RIFF 开头。0。0。文件头部结构详解
AVI 文件头部信息由 hdrl 和 avih 两部分组成:
hdrl:
FOURCC:四字节编码,通常为D83D382E。cb:视频头信息的长度,通常为32字节。dwMicroSecPerFrame:每帧的微秒数,可通过10^6 / fps计算。dwMaxBytesPerSec:视频数据速率,设置为0。dwPaddingGranularity:视频数据的分辨率粒度,设置为0。dwFlags:视频数据的旗志位,常见标志包括AVIF_HAS_INDEX和AVIF_ISINTERLEAVED。dwTotalFrames:总帧数,设置为0。dwInitialFrames:初始帧数,设置为0。dwStreams:数据流的数量,通常为2(一个视频流和一个音频流)。dwSuggestedBufferSize:建议缓冲区大小,通常为0x100000(1,048,576 字节)。dwWidth:视频宽度,不可为0。dwHeight:视频高度,不可为0。dwReserved[4]:保留字段,设置为0。
avih:
FOURCC:四字节编码,通常为32 2C L3 06。cb:avih 结构的长度,通常为32字节。dwMicroSecPerFrame:每帧的微秒数。dwMaxBytesPerSec:音频数据速率,设置为0。dwPaddingGranularity:音频数据的分辨率粒度,设置为0。dwFlags:音频数据的旗志位,常见标志包括AVIF_HAS_INDEX和AVIF_ISINTERLEAVED。dwTotalFrames:总帧数,设置为0。dwInitialFrames:初始帧数,设置为0。dwStreams:数据流的数量,通常为2(一个音频流和一个视频流)。dwSuggestedBufferSize:建议缓冲区大小,通常为0x3000(12,288 字节)。dwWidth:音频宽度,设置为0。dwHeight:音频高度,设置为0。dwReserved[4]:保留字段,设置为0。
数据流结构详解
AVI 文件的数据流由 list1 块存储,具体包括以下几个部分:
strl:字符串列表,存储视频流信息。
strh:视频流头信息,包含视频流的编码类型、分辨率等。vids:视频流数据块,包含压缩后的视频数据。strf:视频流格式块,包含视频压缩格式信息。
strl:字符串列表,存储音频流信息。
strh:音频流头信息,包含音频编码类型、采样率等。auds:音频流数据块,包含压缩后的音频数据。strf:音频流格式块,包含音频压缩格式信息。
AVI 文件的实际应用
在实际应用中,AVI 文件的数据流结构可以根据具体需求进行扩展或修改。例如:
- 视频流数据:视频流数据可以是原始的 RGB 数据,也可以是压缩后的 YUV 格式数据。
- 音频流数据:音频流数据可以是 PCM 码率的线性采样数据,也可以是 MP3 等压缩格式的数据。
- 关键帧信息:视频流中通常会包含关键帧信息,用于视频编码和解码的参考。
AVI 文件的注意事项
在处理 AVI 文件时,需要注意以下几点:
- 文件长度:AVI 文件的总长度可以设置为
0,但需要确保list0的长度正确。 - 数据对齐:如果视频或音频数据的长度为奇数,需要在末尾添加一个零字节以保证数据对齐。
- 兼容性:不同视频编解码器可能对 AVI 文件的数据流格式有不同的要求,需要根据具体编解码器的需求进行调整。
AVI 文件的实际示例
以下是一个简单的 AVI 文件结构示例:
RIFF0x00AVI LIST0x00hdrl0x38avih0x38LIST0x00strl0x38vids0x000x3800dc长度为奇数时添加一个零字节...
通过以上详细介绍,可以看出 AVI 文件格式具有高度的灵活性和扩展性,适用于多种不同的音视频编解码器和应用场景。在实际开发中,需要根据具体需求调整文件头部和数据流的结构,同时确保兼容性和数据对齐。
发表评论
最新留言
不错!
[***.144.177.141]2026年06月03日 23时49分00秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PHP反射机制
2023-03-01
php取当天的最后一秒_Docker快速搭建PHP开发环境详细教程
2023-03-01
php取绝对值
2023-03-01
php各种常用的算法
2023-03-01
php各种缓存策略对比
2023-03-01
php后台“爬虫”模拟登录第三方系统
2023-03-01
php后台的在控制器中就可以实现阅读数增加
2023-03-01
php命令行生成项目结构
2023-03-01
php命名空间
2023-03-01
PHP命名空间带来的干扰
2023-03-01
PHP和MySQL Web开发从新手到高手,第1天-搭建PHP开发环境
2023-03-01
php商店管理系统,基于PHP的商店管理系统.doc
2023-03-01
PHP四大主流框架的优缺点总结
2023-03-01
PHP图片处理—PNG透明缩放并生成灰图
2023-03-01
php在liunx系统中设置777权限不起作用解决方法
2023-03-01
PHP基于openssl实现的非对称加密操作
2023-03-01
php基本符号大全
2023-03-01
php基础篇-二维数组排序 array_multisort
2023-03-01
php增删改查封装方法
2023-03-01
php多条件筛选功能的实现
2023-03-01