零、写在前面

想要了解音频首先要了解它的构造,知道它怎么从声音变成文件,又怎么从文件变成声音。文件格式根据需求和技术的进步有了不同的版本,不同的文件格式有其不同的文件构造。我们先从最原始的两种音频文件入手,讲一讲常见的音频文件格式。首先是PCM和WAV

一、PCM文件

PCM(Pulse-code modulation 脉冲编码调制)是音频原始数据,是采样器(麦克风)电信号转化的数字信号,这就是我们常说的采样到量化的过程,所以其实PCM不仅仅可以用在音频录制方面,它可用在其它电信号转数字信号的所有场景。由这样一段原始数据组成的音频文件叫PCM文件,以.PCM结尾。一个PCM文件的大小取决于以下几个元素:

1.1、格式和参数

采样率:是指每秒电信号采集数据的频率,常见的音频采样率有8000HZ,16000HZ,44100HZ,48000HZ,96000HZ等。

采样位深:表示每个电信号用多少位来存储,例如8位的采样位深能够划为的等级位256份,人耳的可识别声音频率为20-20000hz,那么每个位的误差就达到了80HZ,这对音频的还原度大幅降低,但是它的大小相应的也减小了,更有利于音频传输。早期的电话就使用的比较低的采样率来达到更稳定的通话质量。如果16位位深就能精准采样每一HZ。对于采样位深其实也并没有简单的8位/16位/32位这么简单,对于计算机来讲16位既可以用short表示也可以用16位int表示,32位既可以用32位int表示也可以用32位float表示,除此之外还有有符号和无符号之分,所有对于在编解码的时候对于这个我们也需要注意。

采样通道:常见的有单通道还是双通道,双通道能帮我们区分左右耳的声音,单通道的话两只耳朵都是一样的声音。通常我们追求立体感会使用双通道,所以双通道采集的声音也叫立体声。除此之外还有要求更高的2.1,5.1,6.1,7.1,等等通道类型,这些对你录制音频的麦克风有一定要求。

数据存储方式:表明数据是以交叉方式存放还是以分通道的方式存放,交叉排列只针对的是多通道的音频文件,单通道的音频文件不存在交叉排列。采样通道和数据存储方式决定数据具体如何存储。

那么从上可知生成一个1S的PCM文件所需要占磁盘的大小:

采样率*采样位数*通道数 单位为bit

那么其实算出来的结果也就是我们的比特/秒=比特率

那么我们生成一段时长为10S,采样率44100hz,采样位数为16位,通道数为两位的PCM文件所要占的磁盘大小(单位bit)为:44100*16*2*10。

虽说PCM是音频的源数据但是大多的播放器都无法播放它,因为它只有数据,播放器无从得知要怎么解析它,就算是PCM播放器也要事先指定它的采样率、通道数、和采样位数、以及字节序才能正确的播放(将数字信号转化为电信号)。

所以有了我们常见的几种音频格式WAV/MP3/AAC。当然这些音频格式的出行不仅仅是为了解决存放音频基本信息的问题,像MP3和AAC的目的更多的是压缩数据,在尽量保证质量的前提下,减小文件占用空间,达到更好的传输和存储效果。在这之前先说一说和PCM十分接近的音频文件WAV。

1.2、字节序

我们在录制PCM的时候其实也需要关注无关文件质量,很简单但是又非常重要的东西:字节序。字节序当然不仅仅在音频上,对于一些计算机相关数据交互/存储/通信协议上都是一个需要注意的点,字节序分为大端序和小端序两种,大端序是人更易读的顺序,小端序是电脑更易读的顺序。例如一个数据为0x01234567,那它的大端序为0x01234567 小端序为0x67452301,其实就是把字节位置倒过来放置。

二、WAV

2.1、格式和参数

WAV完全可以说它只解决了PCM数据没有存储录制格式的问题,解决办法也相当简单粗暴,直接在PCM的头部加上录制格式的信息,这些信息占用固定的44字节。所以WAV占用空间上非但没有比PCM数据小,反而大出44个字节,让我们看看这44字节到底放了些什么东西。我们以 采样率为44100,采样位数16,双通道,时长10S的PCM文件转WAV为例。先算出PCM文件大小:44100*16*2*10=14112000bit=176000byte,当然实际应用中我们也可以读取文件长度获得。

所属块

position

名称

大小(byte)

字节序

描述

内容

RIFF块

0-3

ID

4

大端

固定内容'RIFF'ASCALL码

0x52494646

4-7

Size

4

小端

整个文件长(包括头部44)减去ID和Szie大小,其实就是-8

数据为176000+44-8=176036

大端序:0x0002AFA4

小端序:0xA4AF0200

8-11

type

4

大端

固定内容'WAVE'

0x57415645

Format块

12-15

ID

4

大端

固定内容'fmt ',注意最后一个字节未空格(全ASCALL)

0x666d7420

16-19

SIZE

4

小端

该区块(非总文件)长度-ID和Size长度

区块长35-11=24数据长24-8=16

大端序:0x0010

小端序:0x1000

20-21

AudioFormat

2

小端

音频格式,一般为1表示PCM

大端序:0x0001

小端序:0x0100

22-23

NumChannels

2

小端

声道数 1单声道 2立体声

大端序:0x0002

小端序:0x0200

24-27

SampleRate

4

小端

采样率

数据44100

大端序:0x0000AC44

小端序:0x44AC0000

28-31

ByteRate

4

小端

字节率其实就是比特率/8

数据1411200/8=17600

大端序:0x000044C0

小端序:0xC0440000

32-33

BlockAlign

2

小端

每采样一次需要多少字节=

通道数*采样位数/8

数据:2*16/8=4

大端序:0x0004

小端序:0x0400

34-35

BitPerSample

2

小端

采样位数 8/16/24/32bit

数据:16

大端序:0x0010

小端序:0x1000

Data块

36-39

DataId

4

大端

固定内容'data'

0x64617461

40-43

DataSize

4

小端

PCM实际大小

数据:176000

大端序:0x0002AF80

小端序:0x80AF0200

44-(44+

DataSize)

Data

DataSize

小端

PCM数据(其实这里的小端也是我们在录制时经常指定的录制字节序)

PCM数据直接往上拼接

需要注意的是,官方资料是显示这些头文件数据是有大小端序之分的,但实际应用中我们全按大端序来也并不影响我们播放。反正别需要小端的数据你一会小端一会大端的,那肯定不行。至于怎么封装PCM转WAV的方法大家其实看上面的表就已经清楚了。

2.2、总结

优点:在数据上来说他是无损的,保留了原始数据/格式转换简单,几十行代码就能完成一个格式转换/无需转码解码。

缺点:体积过大/文件大小受限,存储文件大小数据的空间只有4字节最多也就2^32个byte将近4GB。

应用场景:其实除了音频外还可以用作广播/其它电信号转数字信号的文件存储。

三、写在最后

这篇记录的是最简单的PCM和WAV音频格式,后续还有MP3和AAC格式的相关记录,有兴趣的可以点个关注等待后续更新,也希望大家能看看我其它博客给出建议哦。欢迎大家交流讨论,批评指正。

音频格式(一)PCM和WAV相关推荐

  1. 音频格式详解 CD WAV MP3 WMA MIDI RM RA OGG VOF AAC M4A APE FLAC TAK TTA MV RealAudio AIFF AU

    以下是常见音频文件格式的特点. 要在计算机内播放或是处理音频文件,也就是要对声音文件进行数.模转换,这个过程同样由采样和量化构成,人耳所能听到的声音,最低的频率是从20Hz起一直到最高频率20KHZ, ...

  2. IOS音频格式之AMR和WAV互转(更新支持64位)

    转自:http://blog.csdn.net/gf771115/article/details/45643271 //-----------------2015.3.20-------------- ...

  3. Android音视频系列(八):了解音频格式WAV以及与PCM的转换

    前言 之前我们已经了解了PCM音频数据,我们理解为最原始的数据,虽然他的音质是最棒的,但是同时也暴露出两个很重要的问题: 普通播放器无法播放,数据里不包含任何跟音频格式有关的信息(声道,采样率等等): ...

  4. Android音频格式转换,Android音视频系列(八):了解音频格式WAV以及与PCM的转换...

    前言 之前我们已经了解了PCM音频数据,我们理解为最原始的数据,虽然他的音质是最棒的,但是同时也暴露出两个很重要的问题: 普通播放器无法播放,数据里不包含任何跟音频格式有关的信息(声道,采样率等等): ...

  5. android音频编辑之音频转换PCM与WAV

    前言 本篇开始讲解在Android平台上进行的音频编辑开发,首先需要对音频相关概念有基础的认识.所以本篇要讲解以下内容: 常用音频格式简介 WAV和PCM的区别和联系 WAV文件头信息 采样率简介 声 ...

  6. 如何将PCM转换为WAV格式?

    许多大多数媒体播放器和便携式设备不支持PCM文件,它们兼容的音频格式为MP3,WAV等.那么如何才能将PCM格式转换为WAV格式呢?这里为大家介绍一款名为AnyMP4 Video Converter ...

  7. 原 android音频编辑之音频转换PCM与WAV

    http://blog.csdn.net/hesong1120/article/details/79043482 本文出自: hesong的专栏 前言 本篇开始讲解在Android平台上进行的音频编辑 ...

  8. java aud 转mp3_音频格式转换:微信语音aud格式转成wav格式

    近期遇到音频格式问题,下面就来记录一下,我暂时还没有找到直接从音频格式aud转换成wav的工具或者代码,所以我这里的转换是先把aud转换成mp3格式,然后再从mp3格式转换成aud格式.我是在linu ...

  9. 音频格式RAW和PCM区别和联系

    定义: RAW:在一些外国品牌的播放机中名为 BitSream,我们通常称为"源码".意义是把光盘上的音频格式不加处理地."原汁原味"地从同轴和光纤输出.这就要 ...

最新文章

  1. BEP 7:CUDA外部内存管理插件(下)
  2. cookie和session的代码实现
  3. HTTP Status 500 – Internal Server Error
  4. 三菱plc编程实例3000_三菱PLC十字路口的红绿灯编程实例
  5. error while loading shared libraries的解決方法
  6. 2. 两数相加(中等)
  7. c语言程序找出500以内的所有素数,c语言求出给定范围内的所有质数
  8. 六本JAVA架构书,构建科学得架构知识体系
  9. 手机html5顶部返回上一页,手机端网页返回顶部js代码
  10. UE4动画蒙太奇位移
  11. 【尚硅谷】JavaScript基础实战丨JS入门到精通_01-06
  12. 使用usb有线网卡u-boot无法ping通虚拟机
  13. 基于STM32的简易数码相册
  14. ac多模式匹配 java_Aho-Corasick 多模式匹配算法、AC自动机详解
  15. bugkuCTF 乌云邀请码 write up【橘小白】
  16. 梦想在三十岁起航!__来自黑马程序员69期安卓班的学员
  17. DNS over HTTPs分析和威胁检测
  18. 毕业设计java 课程精品网站,java毕业设计_springboot框架的精品课程网站
  19. VR和AR核心技术分别是什么?两者有什么不同?
  20. 100多个shell脚本的例子

热门文章

  1. 嵌入式操作系统判断题
  2. 如何修改app在模拟器上的名字
  3. html5 画太极图,canvas基础画太极图(娱乐~)
  4. 微机原理与接口技术 | 一、微型计算机系统
  5. traceroute命令(unix)/tracert命令(windows)
  6. 计算机褐色,脂肪也有“好坏”之分?看颜(yán)值(sè),看分布
  7. 制作android动态壁纸,使用视差滚动制作Android动态壁纸
  8. seo 站内发表文章
  9. 怎么减少计算机内存占有,还在为电脑内存占用太高而烦恼吗?教你一招轻松解决...
  10. 阿里软件资深架构师李战谈:开发者的人品问题