本文介绍 wav 文件格式,主要关注该类格式的结构。

参考:

  [1] 以一个wav文件为实例分析wav文件格式 ( 2017.04.11 CSDN )

  [2] WAV ( Wikipedia )

  [3] Ubuntu Linux 查看、编辑、比较二进制文件 ( 2014.4.24 ChinaUnix )

  [4] wav文件格式分析与详解 ( 2017.10.12 cnblog )

  [5] WAV文件格式解析 ( 2017.04.16 CSDN )

  [6] wav音频文件格式解析 ( 2016.09.11 CSDN )

1、背景


  波形( Waveform )文件格式,由于其拓展名为 .wav ,常被叫作 wave 文件。是微软和 IBM 的音频文件格式标准,主要用于 PC ( Personal Computer ) 存储音频文件。该标准利用了数据传输格式 ( Resource Interchange File Format ab. RIFF ) 中的比特流技术,在"数据块"中存储数据。传统的比特流技术使用的是线性脉冲码调制 ( linear pulse-code modulation ab.LPCM )格式。

2、结构


  为了查看十六进制的数据,还是花了一点功夫。事实上我先生成了目标音频文件,然后利用 VIM 的十六进制模式浏览该文件[3]

 vim -b file.wav
:%!xxd -g 1

示例如下:

   1 00000000: 52 49 46 46 24 40 00 00 57 41 56 45 66 6d 74 20  RIFF$@..WAVEfmt
2 00000010: 10 00 00 00 01 00 01 00 40 1f 00 00 80 3e 00 00 ........@....>..
3 00000020: 02 00 10 00 64 61 74 61 00 40 00 00 4a 83 48 b4 ....data.@..J.H.
4 00000030: 5b 23 ff dd 85 d9 e0 af fe ff da 88 a1 2c 66 61 [#...........,fa
5 00000040: 58 d0 20 a5 7a ad de ce 17 ba 94 56 9f 69 5f cd X. .z......V.i_.
6 00000050: 73 e9 0b 5f 5b 08 cf b9 73 66 c1 32 f3 40 68 61 s.._[...sf.2.@ha
7 00000060: b0 8d 60 ac e5 b9 ff 0c 97 b3 63 8a c4 bd aa a9 ..`.......c.....
8 00000070: dc 5a 0b da b3 70 57 d8 97 78 2b 28 09 10 41 e9 .Z...pW..x+(..A.
9 00000080: b4 c1 43 05 8b 1b 5b dd 0c 58 de 00 fc ff ba f9 ..C...[..X......
10 00000090: 06 8b 6e eb 75 04 4c 37 e8 75 d8 16 15 72 98 cd ..n.u.L7.u...r..

依据引用的示例可得 .wav 文件结构如下:

采样位数越大,电平描述越精细;采样频率越大,帧数多,高频细节越清晰。后面 [4-6] 三篇引用中有关于每一块数据的具体说明。


END

wav文件系列_1_wav格式解读的更多相关文章

  1. wav文件系列_2_Python实现读写

    本文介绍了 Python 实现音频读写的方法.Python wave 模块提供便捷的 wav 文件操作.该模块并不支持压缩与解压,但支持单声道/立体声的转换. 参考: [1] wave — Read ...

  2. Python解析Wav文件并绘制波形的方法

    资源下载 #本文PDF版下载 Python解析Wav文件并绘制波形的方法 #本文代码下载 Wav波形绘图代码 #本文实例音频文件night.wav下载 音频文件下载 (石进-夜的钢琴曲) 前言 在现在 ...

  3. 音视频学习系列第(三)篇---wav文件的存储和解析

    音视频系列 什么是wav wav是一种无损的音频文件格式,wav文件有两部分,第一部分是文件头,记录一些重要的参数信息,如音频的采样率,通道数,数据位宽,第二部分是数据部分,数据部分可以是PCM,也可 ...

  4. 如何利用 iTunes 把 m4a/wav 文件转成 MP3 格式

    MAC技巧 | 如何利用 iTunes 把 m4a/wav 文件转成 MP3 格式 - 简书

  5. 将任意音频格式文件转换成16K采样率16bit的wav文件

    此转换需要使用ffmpeg 假设有目录 d:\录音 目录有 张三.m4a, 李四.m4a xxx.m4a(其他任意格式音频触类旁通可以把 *.m4a改成*.*).批量转换成采样率16K,有符号,16b ...

  6. C++标准库实现WAV文件读写

    在上一篇文章RIFF和WAVE音频文件格式中对WAV的文件格式做了介绍,本文将使用标准C++库实现对数据为PCM格式的WAV文件的读写操作,只使用标准C++库函数,不依赖于其他的库. WAV文件结构 ...

  7. zlib压缩一个文件为gzip格式

    网上有很多针对zlib的总结,但是很零散,自己经过总结,实现了用zlib压缩一个文件为gzip格式,似的可以直接使用winr工具解压. 具体方法是使用zlib的deflate系列函数,将buffer压 ...

  8. PC-1500的代码存入WAV文件

    目录 第1章保存    1 1.1 操作    1 1.2 波形说明    4 1.3 波形整形    5 1.4 压缩    8 第2章载入    9 2.1 操作    9 2.2 音量    9 ...

  9. Ubuntu下用cue文件对ape和wav文件自动分轨

    很多音乐CD的镜像文件都带cue格式的分轨文件,在Ubuntu Linux下可以通过一些工具来实现自动分轨. 一.Ubuntu下需要安装的工具有flac,shntool,libav-tools $ s ...

随机推荐

  1. FreeMarker与Thymeleaf

    FreeMarker 是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯 Java 编写,FreeMarker 被设计用来生成 HTML Web 页面,特别是基于 MVC 模式的应用程序,虽然 ...

  2. 合并两个 Lambda 表达式

    概述 在开发工作中,有些时候需要对一些增删改查进行封装(用 Lambda 表达式来筛选数据),但是又有一部分条件总是相同的,对于相同的部分可以直接写到方法里,而不同的部分作为参数传进去. 定义扩展方法 ...

  3. 图融合之加载子图:Tensorflow.contrib.slim与tf.train.Saver之坑

    import tensorflow as tf import tensorflow.contrib.slim as slim import rawpy import numpy as np impor ...

  4. [luogu P2521] [HAOI2011]防线修建

    [luogu P2521] [HAOI2011]防线修建 题目描述 近来A国和B国的矛盾激化,为了预防不测,A国准备修建一条长长的防线,当然修建防线的话,肯定要把需要保护的城市修在防线内部了.可是A国 ...

  5. SQL server 2012安装中出现的INSTALLSHAREDDIR 和 INSTALLSHAREDWOWDIR 参数具有相同的值问题

    出现的问题如下: INSTALLSHAREDDIR 和 INSTALLSHAREDWOWDIR 参数具有相同的值“D:\soft\sql”.但是,这些参数必须具有不同的值.请为其中一个参数指定不同的值 ...

  6. 小程序一个大盒子里面的盒子内容居中对其显示wxss写法

    对小程序研究感兴趣的可加(交流QQ群:604788754)入群联系群主可得到小程序教学资源. 这个案例只是想展示效果,内容部分未进行for循环绑定处理: WXML: <view class=&q ...

  7. week4_1

    ---恢复内容开始--- _________________________________列表生成式_____________________ a = [a*2 for a in range(10) ...

  8. implode() 数组元素组合函数

    定义和用法 implode() 函数把数组元素组合为一个字符串. 语法:implode(separator,array); 说明 虽然 separator 参数是可选的.但是为了向后兼容,推荐您使用使 ...

  9. MobX 学习

    资源汇集帖: https://github.com/mobxjs/awesome-mobx/blob/master/README-CN.md 中文文档: http://cn.mobx.js.org/ ...

  10. EFCore Lazy Loading + Inheritance = 干净的数据表 (一) 【献给处女座的DB First程序猿】

    前言 α角 与 β角 关于α角 与 β角的介绍,请见上文 如何用EFCore Lazy Loading实现Entity Split. 本篇会继续有关于β角的彩蛋在等着大家去发掘./斜眼笑 其他 本篇的 ...