一、AVI文件

打开一个AVI文件,其音频数据与视频数据是如何放置的?

一个视频帧大约占据多少字节?

一个音频数据块大约占据多少字节?

52 49 46 46 是RIFF的ASCII码值,说明这是一个RIFF文件

28 22 30 00 是用于表示文件大小的4个字节,此文件大小为0x00302228,文件大小为3154472字节,还要加上开头的8字节,所以这个文件大小实际为3154480字节。

41 56 49 20 是AVI的ASCII码值,说明这是一个AVI文件

4C 49 53 54 是LIST的ASCII码值

CA 22 00 00 表示LIST的大小,为8906字节,整个LIST的大小为8906+8=8914

68 64 72 6C 是hdrl的ASCII码值,说明这是一个头信息列表(header list)

61 76 69 68 是avih的ASCII码值,说明这是一个主avi头(main avi header)

38 00 00 00 表示chunk的大小的4个字节,此文件chunk大小为0x00000038即56字节,整个chunk的大小为56+8=64字节

A0 86 01 00 表示帧之间的微秒数,为0x000186A0,即100000微秒,即0.1秒

BC 22 03 00 表示文件的近似最大速率,为0x000322BC,即621274字节/秒

00 00 00 00 表示以多少字节对齐,此文件以0字节对齐

10 09 00 00 是结构体AVIMAINHEADER中的dwFlags成员

C7 00 00 00 表示文件总共有多少帧,此文件共有0x000000C7帧,即199帧。由此项和帧之间的微秒数可以得出视频的时长=199x100000,为19900000微秒,19.9秒

00 00 00 00 表示交错帧中的初识帧,非交错文件则该值为零

02 00 00 00 表示文件中所包含的流的数量,此文件包含两个流,故值为2

00 00 10 00 表示读该文件时建议的缓存大小,为0x00100000,即1048576字节

EE 03 00 00 表示文件的宽,以像素为单位

24 02 00 00 表示文件的高,以像素为单位

00 00 00 00

00 00 00 00

00 00 00 00

00 00 00 00 十六个字节的保留位

4C 49 53 54 LIST

E0 10 00 00 LIST的大小

73 74 72 6C LIST的类型,说明这是一个流信息的LIST,strl的ASCII码值

73 74 72 68 说明这是一个流的头信息chunk,srth的ASCII码值

38 00 00 00 chunk的大小

76 69 64 73 vids的ASCII码值,说明这是一个视频流

78 76 69 64 标识解码该流时使用的编解码器

00 00 00 00 整个数据流的标志

00 00 00 00 是结构体AVISTREAMHEADER的wPriority成员和wLanguage成员

00 00 00 00 表示交错帧中的初始帧,非交错文件,该值为0

01 00 00 00  是结构体AVISTREAMHEADER的dwScale成员,与 dwRate 一起,决定该流所要使用的时间尺度。对于视频流来说,dwRate / dwScale = 帧率(fram rate )

0A 00 00 00 是结构体AVISTREAMHEADER的dwRate成员,结合上一条信息可以算出此视频的帧率

00 00 00 00 这个流的开始时间。此处为0,文件开始时,流即开始

C7 00 00 00 表示流的长度,对于视频流其值就是视频的总帧数,即199

D7 7D 01 00 表示读该流时,建议的缓存大小

FF FF FF FF 表示该流的质量指标

00 00 00 00 表示一个数据样本的大小。如果样本大小可变,此值为0。视频流中,该值一般为0。此处为0

00 00 00 00 是结构体AVISTREAMHEADER的rcFrame成员的left和top成员

EE 03 24 02 是结构体AVISTREAMHEADER的rcFrame成员的right和bottom成员

73 74 72 66 strf的ASCII码值,说明这是一个流的格式信息chunk

28 00 00 00 格式信息chunk的大小,不包括最初的8个字节

28 00 00 00 是结构体BITMAPINFO的成员BITMAPINFOHEADER的biSize成员,表示结构体BITMAPINFOHEADER的大小。为0x00000028,即40字节。这说明本chunk中,BITMAPINFO只包含一个成员,即BITMAPINFOHEADER结构体

EE 03 00 00 位图的宽,以像素为单位

24 02 00 00 位图的高,以像素为单位

01 00 18 00 表示一个像素所占的位数,其值为0x0018,即一个像素占24位

78 76 69 64 cvid的ASCII码值,表示压缩的类型

68 3C 19 00 表示image的大小

00 00 00 00 水平分辨率

00 00 00 00 垂直分辨率

00 00 00 00 是结构体BITMAPINFOHEADER的biClrUsed成员,此处为0。表明此处使用与对于biCompression指定的压缩模式的biBitCount值所对应的最大值

00 00 00 00 是结构体BITMAPINFOHEADER的biClrImportant成员,此处为0。表明所有的颜色都是重要的

实际的音视频数据由此开始 (如上图)

AVI文件的音视频数据是交织放置的

此文件共199帧,视频长度为19.9秒,计算得出10帧/秒,根据其最大近似速率为621274字节/秒,可以算出此视频文件一个数据帧大约为62127字节

二、MP4文件

MP4文件的数据都装在box中,可以将box理解为数据对象块。box中可以包含另一个box,这种box称为container box。

File Type Box(ftyp)

一个MP4的文件只有一个ftyp类型的box,是MP4格式的标志,并包含有一些文件信息。如下图所示:

Movie Box(moov)

之后就是moov类型的container box,与ftyp一样,有且只有一个,存放媒体信息

(然而我没在自己打开的二进制文件中找到相应的关键字......我从网上找到一张解释MP4文件格式的图片,引用如下图,并附上网址)

(图片源自:MP4文件格式的解析,以及MP4文件的分割算法 - haibindev - 博客园)

三、WAV

WAV文件的声音数据保存在数据块中,块标识为data,块长度值为声音数据的长度。从数据块第9个字符开始是声音波形的采样数据,每个样本按采样时间先后顺序写入,样本字节数取决于采样位数。

52 49 46 46 46  是RIFFF的ASCII码值

20 09 00  是此WAV文件的数据大小

57 41 56 45 66 6D 74 20  是WAVEfmt的ASCII码值

10 00 00 00  这是一个DWORD,对应十进制数16,此值为16时表明最后没有附加信息。若此值大于16,多出几则文件多出几个字节的附加信息

01 00  这是一个WORD,对应编码格式

02 00  表示声道数,此值为2,说明此文件为双声道

80 BB 00 00  表示采样频率,0x0000BB80转换为十进制是48000,采样频率为48000Hz

00 EE 02 00  表示每秒的数据量,0x0002EE00转换为十进制是567000,即波形音频数据传输速率。此值=通道数x每秒样本数x单个样本的数据位数/8,播放器可用此值估计缓冲区的大小

04 00  表示块对齐的内容,即数据块的调整数。此值=通道数x单个样本数据位值/8,播放器需要一次处理多个此值大小的字节数据以便将其值用于缓冲区的调整

10 00  表示每个样本的数据位数,值为16,则采样大小为16bit

64 61 74 61  为data的ASCII码值,data标示头结束,开始数据区域(因为这段音频无声的部分相对较多,所以data之后有很长一段空白,有声部分的部分数据如下:)

参考资料:

​​​​​​二进制 AVI格式解析_CP5949527的博客-CSDN博客

mp4文件格式解析 - nigaopeng - 博客园

MP4文件格式的解析,以及MP4文件的分割算法 - haibindev - 博客园

wav文件格式分析与详解 - nigaopeng - 博客园

第三周 AVI、MP4、WAV文件格式相关推荐

  1. AVI和WAV文件格式分析

    文章目录 AVI文件 WAV文件概述 文件结构 1. RIFF WAVE块格式 2. Format块格式 3. Fact块格式 4. Data块格式 1) 8比特单声道 2) 8比特双声道 3) 16 ...

  2. 第三周:RIFF、AVI、WAV文件格式分析

    RIFF格式 资源互换文件格式(Resources interchange File Format),RIFF文件市微软提出的windows环境下大部分多媒体文件遵循的一种文件结构,如WAV文件.AV ...

  3. 第三周 AVI文件格式解析

    一.AVI文件简介   AVI英文全称为Audio Video Interleaved,Audio/Video Interleaved(视音频交织),用于采集.编辑.播放的RIFF文件,由信息块,数据 ...

  4. 数据压缩三 AVI和WAV格式分析

    AVI的介绍: AVI的英文全称是Audio/Video Interleaved,Audio/Video Interleaved(视音频交织),用于采集.编辑.播放的RIFF文件,由信息块,数据块,索 ...

  5. 【数据压缩】第三周作业——WAV文件格式分析

    1 WAV文件格式概述 WAV为微软公司(Microsoft)开发的一种声音文件格式,它符合RIFF(Resource Interchange File Format)文件规范,用于保存Windows ...

  6. WAV文件格式分析(附AVI文件格式分析)

    目录 一.WAV格式简介 二.WAV格式结构 1.RIFF chunk 2.Format chunk 3.Data chunk 三.AVI文件格式分析 Q1:音频和视频的数据是如何放置的?交织放置or ...

  7. 【数据压缩3】AVI文件格式分析及问题回答+WAV文件格式分析

    目录 AVI文件问题回答 1.AVI文件音频和视频的数据是如何放置的,交织放置还是连续放置? 2.AVI文件一个视频帧大约占据多少字节?一个音频数据块大约占用多少字节? WAV文件格式分析 文件概述 ...

  8. [数据压缩]WAV文件格式分析及AVI数据结构分析

    目录 WAV文件格式分析 WAV概述 WAV文件格式分析 根据实例的WAV文件结构分析 AVI数据结构 音频与视频的数据放置方式 视频帧与音频帧的字节数 参考引用 WAV文件格式分析 WAV概述 Wa ...

  9. wav文件格式分析与详解

    wav文件格式分析与详解 WAV文件是在PC机平台上很常见的.最经典的多媒体音频文件,最早于1991年8月出现在Windows 3.1操作系统上,文件扩展名为WAV,是WaveFom的简写,也称为波形 ...

最新文章

  1. AI转型业绩哪家强?联想一季度营收853亿,净利11亿
  2. scrollview 实现滑动到底部再滑动加载数据的功能
  3. 阿里巴巴集团CTO王坚:互联网、数据和计算
  4. CentOS中怎样安装、配置、启动Nginx
  5. C++ternary search三元搜索的实现算法(附完整源码)
  6. 【Spring 5】响应式Web框架前瞻
  7. osx doc to html,macos – 在OSX上安装Git HTML帮助
  8. 电力电子单相交流调压电路实验,江南大学物联网工程学院,实验报告
  9. 中控消费机一直显示连接服务器,中控消费机培训及常见问题的解决办法
  10. Spring和依赖注入的价值
  11. SpringAOP和AspectJ
  12. java traingdx函数实现_提取伪彩色图像的信息
  13. 使用SharePoint Designer 2010新建外部内容类型,并解决访问被拒绝问题
  14. KVM实验一 pepsi-wyl
  15. html 大转盘游戏,HTML5 Canvas大转盘抽奖活动页面代码
  16. 量化投资中常用python代码分析(一)
  17. 【英语】 英语的重音怎么读
  18. CC2640之看门狗
  19. 海关数据正确引用方式
  20. [转]商业模式新生代

热门文章

  1. 在CentOS 8 下yum install curl时报错
  2. 译文 :图文教程,8步教你变身数据科学家
  3. Linux性能分析工具
  4. 笔记:python基础之内置函数2
  5. Hadoop大数据通用处理平台
  6. 转 信安之路 CTF初识与深入
  7. 赛门铁克如何用TAA搞定APT?
  8. css选中父元素下的第一个子元素
  9. 计算机网络vlan的作用,计算机网络 篇一:一根网线解决IPTV和路由器联网--基于VLAN的IPTV和宽带单线复用解决方案...
  10. 上帝视角看 TypeScript