AVI 视频 (.avi)
Microsoft 标准音频视频交错格式(AVI)是微软于 1992 年推出的一款具有里程碑意义的多媒体容器,它将音频和视频流交错排列以实现同步播放。
检查与元数据
操作系统和文件分析器通过检查开头的二进制字节序列来识别 AVI 文件:
字节级文件头签名 (Magic Bytes)
操作系统和文件分析器通过检查开头的二进制字节序列来识别 AVI 文件:
十六进制签名 (偏移量 0):
52 49 46 46 00 00 00 00 41 56 49 20ASCII 表示形式: RIFF....AVI
标准化: Microsoft RIFF Specification / OpenDML Extension
技术规格
| 容器架构 | Resource Interchange File Format (RIFF) interleaved chunk container |
| 压缩方式 | Interleaved streams supporting DivX, Xvid, Motion JPEG, raw uncompressed, and MP3 audio |
| 字节序 | Little-Endian (Intel x86 byte order) |
| 色彩空间 | YUV 4:2:0, RGB, and palette colors |
| 通道与结构 | Stereo and multichannel audio streams |
| 最大尺寸 | Unrestricted; OpenDML AVI extension supports 4K and multi-gigabyte streams |
| 透明度 | Supported via RGBA uncompressed video streams |
| 流式传输与渐进式加载 | Index chunk placed at end of file; poorly suited for progressive web streaming |
技术对比矩阵:AVI 对比同类产品
| 技术属性 | AVI (当前) | MP4 | MKV | MOV |
|---|---|---|---|---|
| 流媒体适应性 | 较差;跳转前需要下载整个文件 | 优秀(FastStart / HLS / DASH) | 良好(分段 EBML) | 优秀(FastStart) |
| HTML5 网页播放 | 现代浏览器原生不支持 | 所有浏览器 100% 通用 | 部分支持(Edge / Chrome) | 在 Safari / 苹果设备上受支持 |
| 字幕嵌入 | 依赖破解技巧(需要外部 .srt 文件) | 原生定时文本(tx3g / VTT) | 完全原生支持 ASS/SSA/SRT | 原生苹果 QuickTime 字幕 |
| 可变帧率 | 严格的恒定帧率(CFR) | 原生 VFR 支持 | 原生 VFR 支持 | 原生 VFR 支持 |
常见损坏模式与十六进制恢复指南
媒体播放器可以播放视频但无法跳转或快进,或者报告"损坏的索引"。
根本原因: 在中断的下载过程中,尾部的 'idx1' 索引块被截断或删除。
恢复方法: 使用 DivFix++、VLC("构建索引然后播放"),或运行 'ffmpeg -i broken.avi -c copy fixed.avi' 重建索引。
安全分析与解析器攻击向量
AVI 文件包含复杂的块层级结构并支持无数冷门的传统视频解码器,这使得未沙盒化的解码器容易受到解析器漏洞的影响。
已知攻击向量
- 旧版 Windows 媒体播放器中 'strh'(流标题)块解析的堆缓冲区溢出。
- 针对恶意构造的大帧数标题分配索引数组期间发生整数溢出。
- 旧版 DirectShow 滤镜中运动 JPEG 解压缩的越界读取。
防御性最佳实践:
历史渊源与里程碑
核心优势与特点
- 在 Windows 媒体软件和视频编辑器中拥有极其广泛的传统桌面支持。
- 支持用于档案胶片扫描和科学视频分析的未压缩原始帧。
- 简单的流交错架构,容器开销较低。
技术局限与劣势
- 缺乏对现代视频容器功能(如可变帧率 VFR 和章节)的原生支持。
- 非常不适合网络流媒体播放,因为主索引块('idx1')存储在文件末尾。
- 在不重新编码为 MP4 或 WebM 的情况下,没有原生的 HTML5 视频浏览器支持。
趣味技术冷知识
- 在 2000 年代初期,DivX 和 Xvid AVI 文件是对等文件共享网络使用的主要格式。
- 由于 32 位文件偏移指针,最初的 1992 年 AVI 规范文件大小不能超过 2 GB。
- AVI 文件末尾的 'idx1' 块列出了用于跳转的每个单帧的字节偏移量。
常见技术问题
为什么我不能在网页浏览器中直接播放 AVI 视频?
现代浏览器将 MP4 (H.264/AV1) 和 WebM (VP9/AV1) 标准化,因为它们的容器格式针对渐进式流媒体进行了优化。AVI 缺乏原生的网页流媒体功能,并且在 HTML5 <video> 中不受支持。
如何修复无法定位或拖动的 AVI 文件?
AVI 文件依赖于文件末尾的索引表。如果不完整,播放器将无法定位。使用 File2File 视频转换器对文件进行转码或重新建立索引可以恢复完整的时间轴拖动功能。
AVI 和 MP4 有什么区别?
AVI 是 1992 年的旧版容器,专为本地桌面播放而设计。MP4 是 2001 年的现代标准,支持网络流媒体、章节、可变帧率、字幕和更高级的压缩。