wav音频文件头解析
wav文件详解
目录(?)[+]
工具
我们这里使用的工具有ffmpeg, cooledit, ultraedit。
音频文件
文件链接http://pan.baidu.com/s/1j6fbt
wav的基础知识介绍
PCM编码介绍
你可以在cooledit里面放大这个图片,看到实际上它就是一个波形图。一个声音对应的就是一个波形图。
PCM实际上就是讲这个波形图通过按一定的时间间隔,收集起来。这里不详细描述,可以参考
ffmpeg中通过deocde的方式,实际上都是把音频文件转换为pcm格式,让pc或者手机上面的声卡设备来播放。(目前看都是这种形式)
wav头文件详解
偏移地址
|
大小
字节
|
数据块
类型
|
内容
|
00H~03H
|
4
|
4字符
|
资源交换文件标志(RIFF)
|
04H~07H
|
4
|
长整数
|
从下个地址开始到文件尾的总字节数
|
08H~0BH
|
4
|
4字符
|
WAV文件标志(WAVE)
|
0CH~0FH
|
4
|
4字符
|
波形格式标志(fmt ),最后一位空格。
|
10H~13H
|
4
|
整数
|
过滤字节(一般为00000010H)
|
14H~15H
|
2
|
整数
|
格式种类(值为1时,表示数据为线性PCM编码)
|
16H~17H
|
2
|
整数
|
通道数,单声道为1,双声道为2
|
18H~1BH
|
4
|
长整数
|
采样频率
|
1CH~1FH
|
4
|
长整数
|
波形数据传输速率(每秒平均字节数)
|
20H~21H
|
2
|
整数
|
DATA数据块长度,字节。 |
22H~23H
|
2
|
整数
|
PCM位宽
|
24H~27H | 4 | 4字符 |
“fact”,该部分一下是可选部分,即可能有,可能没有,一般到WAV文件由某些软件转换而成时,包含这部分。
|
28H~2BH | 4 |
长整数
|
size,数值为4 |
表2 WAV声音文件的
偏移地址
|
字节数
|
类型
|
内容
|
24H~27H
|
4
|
4字符
|
数据标志符(data)
|
28H~2BH
|
4
|
长整型
|
DATA总数据长度字节
|
2CH...
|
...
|
DATA数据块
|
他的三个最重要的参数是采样率,比特数,声道数。
我们使用UE打开这个音频文件
注意,我们的pc都是小端模式,所以注意读取数据的真实内容。
我们解读一下这个wav文件
00H ~ 03H 52 49 46 46 对应的是RIFF
04H ~ 07H 48 10 03 00 对应的是后面文件的大小,小端模式所以是00031048 ,换算为十进制的200776
08H ~ 0BH 57 41 56 45 对应的是标示符WAVE
0CH ~ 0FH 66 6d 74 20 对应是波形格式标示符fmt
10H ~ 13H 12 00 00 00 对应的是过滤字节,不知道是什么作用,由于本文件不是标准的采样率,所以可能和上面的不一致
14H ~ 15H 01 00 对应的十进制是1 线性的PCM编码,我们这里只探讨PCM编码
16H ~ 17H 01 00 对应的十进制是1 表示单声道,MONO
18H ~ 1BH 80 3E 00 00 对应的十进制是16000.表示采样率是16000的
1CH ~ 1FH 00 7D 00 00 对应的十进制是32000,波形数据传输率,每秒多少个字节,可以用(200776 -72)/32000 = 6.272s
20H ~ 21H 02 00 对应的十进制是2,数据的调整数
22H ~ 23H 10 00 对应的十进制是16,样本数据的位数,表示用16位表示一个样本
我们的和表二之间有一些差距,是ffmpeg转码的数据,所以中间夹着了一些ffmpeg的信息
48H ~ 4BH 64 61 74 71 对应的ACSCII码是data
4CH ~ 4FH 00 10 03 00 对应的十进制是200704,表示采样数据的总数
从50H开始就是真正的数据部分
在使用ffmpeg解包的时候总共是有49个包,每个包的大小为4096, 49*4096 =200704,
怎么计算出来包的大小,需要进一步的分析。
本文参考
http://baike.baidu.com/view/8033.htm
wav音频文件头解析相关推荐
- java音频解析_wav音频文件头动态解析--java语言
之前有处理过一些相对较为不常见的音频格式,也睬过很多坑,这里做一下简单记录.后面可能随着接触音频类型的增多做进一步更新,像之前有记录过包含LIST数据块的wav格式录音就是调试过程中发现遗漏点. 在此 ...
- 记:ELF文件解析初定义——文件头解析
0x00 概论 因为TI的DSP输出文件与传统的ELF文件不符,所以本人就顺道研究了一下现在的ELF的文件格式. 会将其陆续完成在文章中. 阅读本文之前,您需要掌握的技能有: 技能名称 技能熟练度 技 ...
- python ,ffprobe获取音频文件头信息,文件格式等
代码示例: import struct import os from loguru import logger# 支持文件类型 # 用16进制字符串的目的是可以知道文件头是多少字节 # 各种文件头的长 ...
- 视频文件头解析--mkv
MKV 的文件格式的目标是,成为多媒休包容格式的标准.它基于EBML(扩展二进制多媒体语言).与XML标记语言有点相似. EBML是类似于XML那样的层次化结构,每一个元素都有它的ID(就是元素名)和 ...
- 视频文件头解析之---avi
AVI格式是音频视频交错(Audio VideoInterleaved)的英文缩写,它是Microsoft公司开发的一种符合RIFF文件规范的数字音频与视频文件格式,原先用于Microsoft Vid ...
- 视频文件头解析--wma
wma文件结构示意图 格式的简单说明: 如图1,每一个WMA文件,它的头16个字节是固定的,为十六进制的"30 26 B2 75 8E 66 CF 11 A6 D9 00 AA 00 62 ...
- 视频文件头解析--wmv-浅析
WMV格式浅析 WMV,全称Windows Media Video,是微软为其开发的若干音视频编解码器推出的视频压缩文件格式.WMV,也是一种编解码器,最早 设计用于互联网流媒体应用,主要针对的竞争对 ...
- swf文件格式解析入门(文件头解析)
这里是使用as3语言来对swf文件做解析,其它语言可以参考. 一,准备工作 从Adobe官网下载一份swf文件格式说明文档 http://www.adobe.com/content/dam/Adobe ...
- 视频文件头解析--mpeg-个人对mpg文件结构的理解
1.一个mpg文件可以只包含视频内容,那么文件开头以0x000001B3作为起始码 2.以0x000001BA 开头,就意味着同时包含音频数据和视频数据,如果没有音频数据,则以0x000001B3开头 ...
最新文章
- python编码(六)
- Netweaver工作进程的内存限制 VS CloudFoundry应用的内存限制
- 带你走近AngularJS - 创建自定义指令
- android adb命令,向开发手机添加文件
- secureCRT自动断开的解决方法
- Android --- allowBackup 属性的含义和危险性实例讲解
- VTK修炼之道73:交互部件_Widget应用综述
- postgresql的系统列(system cloumns)
- springmvc-实现增删改查
- python 2.7 input_Python2.7-fileinput
- 程序—java年月日转换
- python 读取内存_python内存读写
- 管理小故事精髓 100例
- 计算机系统构成及硬件基础知识
- 知识点滴 - 大麦、小麦、燕麦和荞麦的区别
- rtlinux linux实时补丁,(九)RTLinux补丁以及cyclictest
- mysql 5.6 配置ssl_MySQL 5.6使用 SSL 连接
- 郁金香搜索引擎的方案(2017版)
- 将SQL server2019数据库部署在虚拟机上
- Java 两种zero-copy零拷贝技术mmap和sendfile的介绍