音频编解码·格式篇(1)Wave PCM audio format(WAV)

  • 作者:柳大·Poechant
  • 博客:Blog.CSDN.net/Poechant
  • 邮箱:zhongchao.ustc@gmail.com
  • 日期:April 6th, 2012

0 音频编解码基础

  • 采样率:声音信号在“模数转换”过程中单位时间内采样的次数。
  • 采样值:每一次采样周期内声音模拟信号的积分值。
  • 单声道:11.025 KHz 采样值,8 Bits 采样值(0x00 - 0xFF)。
  • 双声道:44.1 KHz 采样值,16 Bits 采样值。高八位表示左声道,低八位表示右声道。

1 WAV音频文件格式

见下图:

  • 文件头

    • RIFF/WAV 文件标识段
    • 声音数据格式说明段
  • 数据体:由 PCM(脉冲编码调制)格式表示的样本组成。

单声道 WAV 文件中,声道0代表左声道,声道1代表右声道;多声道 WAV 文件中,左右声道的样本是交替出现的。

1.1 文件头格式:

偏移地址 字节数 数据类型 内容
0x00 4 char “RIFF”标志
0x04 4 long int 文件长度
0x08 4 char “WAVE”标志
0x0C 4 char “fmt ”标志
0x10 4   过度字节(不定)
0x14 2 int 格式类别(0x10是PCM形式的声音格式)
0x16 2 int 通道数(1为单声道,2为双声道)
0x18 2 int 采样率(每秒的样本数,表示每个通道的播放速度)
0x1C 4 long int 波形音频数据传输速率,为(通道数x每秒数据位数x样本的数据位数/8,播放器根据此值估算缓冲区大小)
0x20 2 int 数据块的调整数,为(通道数x没样本的数据位值/8),播放软件一次需要处理多个该值大小的字节数据,以便就爱将其值用于缓冲区的调整
0x22 2   每样本的数据位数,表示每个声道中各样本的数据位数,如果有多个声道,对每个声道而言,样本大小都一样

1.2 数据体格式:

偏移地址 字节数 数据类型 内容
0x24 4 char 数据标记符“data”
0x28 4 long int 语音数据的长度

然后就是语音数据帧了。下表中的0声道代表左声道,1声道代表右声道:

偏移地址 sample1 sample2
8位单声道 0声道 0声道
8位双声道 0声道,1声道 0声道,1声道
16位单声道 0声道低字节,0声道高字节 0声道低字节,0声道高字节
16位双声道 0声道低字节,0声道搞字节 1声道低字节,1声道高字节

1.3 WAV文件格式实例分析(转载)

地址段 0 1 2 3 4 5 6 7 8 9 A B C D E F
0x00000000 52 49 46 46 0A 06 01 00 57 41 56 45 66 6D 74 20
0x00000010 12 00 00 00 01 00 02 00 44 AC 00 00 10 B1 02 00
0x00000020 04 00 10 00 00 00 66 61 63 74 04 00 00 00 76 41
0x00000030 00 00 64 61 74 61 D8 05 01 00 00 00 00 00 FF FF
0x00000040 00 00 FE FF FE FF 00 00 00 00 FE FF FE FF 00 00
0x00000050 64 61 6B 61 D8 05 01 00                
地址段 字节数 数据类型 内容
0x00 - 0x03 4 4个char 标志位,"RIFF"
0x04 - 0x07 4 1个int 文件长度,小尾端,实际是0x0001060A
0x08 - 0x0B 4 4个char 标志位,“WAVE”
0x0C - 0x0F 4 4个char 标志位,“fmt ”,fmt表示为,最后一个是空格
0x10 - 0x13 4 1个int 0x00000012,sizeof(PCMWAVEFORMAT)
0x14 - 0x15 2 1个short 格式类别,1(WAVE_FORMAT_PCM)表示PCM形式的声音数据
0x16 - 0x17 2 1个short 通道数,1为单声道,2为双声道
0x18 - 0x1B 4 1个int 采样率
0x1C - 0x1F 4 1个int 0x10B10000,每秒数据量
0x20 - 0x21 2 1个short 数据块的调整值(按字节算)
0x22 - 0x4F      
0x50 - 0x53 4 4个char 标志位,“data”
0x54 - 0x57 4 1个int 语音数据大小,0x000105D8

Reference

  1. WAV(PCM)文件格式分析

音频编解码·格式篇(1)Wave PCM audio format(WAV)相关推荐

  1. 音频编解码·实战篇(1)PCM转至AAC(AAC编码)

    音频编解码·实战篇(1)PCM转至AAC(AAC编码) 作者:柳大·Poechant 博客:blog.csdn.net/poechant 邮箱:zhongchao.ustc@gmail.com 日期: ...

  2. 视音频编解码学习工程:FLV封装格式分析器

    ===================================================== 视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习 ...

  3. G711(PCM/PCMA/PCMU),G721,G723,G729等 音频编解码

    G711,G721,G723音频编解码,G729音频库,Android G711(PCMA/PCMU).G726.PCM音频转码到AAC,ffmpeg接收g723音频流,Android G726语音编 ...

  4. Androidpcm格式音频编解码及播放,socket文件传输通讯,soundTouch变声框架 合成的一款仿微信语音按住说话的demo

    pcm格式音频编解码及播放,socket文件传输通讯,soundTouch变声框架 合成的一款仿微信语音按住播放的demo 效果:   -------------- 代码: MainActivity ...

  5. 视音频编解码学习工程:TS封装格式分析器

    ===================================================== 视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习 ...

  6. [总结]FFMPEG视音频编解码零基础学习方法--转

    ffmpeg编解码学习 目录(?)[-] ffmpeg程序的使用ffmpegexeffplayexeffprobeexe 1 ffmpegexe 2 ffplayexe 3 ffprobeexe ff ...

  7. 基于 CoreAudio 的音频编解码(一):音频解码

    系列文章目录 基于 CoreAudio 的音频编解码(一):音频解码 基于 CoreAudio 的音频编解码(二):音频编码 前言 Core Audio 是iOS和MAC系统中的关于数字音频处理的基础 ...

  8. FFMPEG视音频编解码零基础学习方法

    总结]FFMPEG视音频编解码零基础学习方法 在CSDN上的这一段日子,接触到了很多同行业的人,尤其是使用FFMPEG进行视音频编解码的人,有的已经是有多年经验的"大神",有的是刚 ...

  9. 音视频开发(5)---FFMPEG视音频编解码零基础学习方法

    FFMPEG视音频编解码零基础学习方法 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/leixiaohua1020/article/details/ ...

最新文章

  1. java对一个无序列表进行分组
  2. git初使用(本地创建后第一次提交到git)
  3. Dependency injection in .NET Core的最佳实践
  4. 重言式判别c语言中文网,重言式判别 重言式判别源码及课程设计 c语言版.doc
  5. std::string的resize()与reserve()的区别
  6. noj数据结构稀疏矩阵的加法十字链表_数据结构之:图
  7. 产品经理如何锻炼自己看透事物本质的能力
  8. linux-关于用户的约定
  9. (51)Verilog HDL上升沿检测
  10. 你真的会用Context么?
  11. 接口自动化测试框架搭建(6、对接口进行mock的方法封装)--python+HTMLTestRunnerCN+request+unittest+mock+db
  12. 推荐5款你用过之后不舍得卸载的小众软件
  13. python风变编程是骗局吗-如何看待风变编程的 Python 网课?
  14. 落幕,致我的大学生活
  15. wordpress博客 qq客服插件
  16. mysql语句中limt_mysql sql语句中的limit用法
  17. Oracle公司中文翻译为“甲骨文”的来源是什么?
  18. php中=%3e -%3e的区别,华为nova3e与nova2s买哪个好?华为nova2s和nova3e区别对比详细评测...
  19. Linux(CentOS)操作系统安装详解
  20. 精读5G:关于5G的NSA和SA,看完秒懂!

热门文章

  1. weblogic12C如何解决AdminServer.lok问题
  2. QT 生成.so动态库默认生成.so .so.1 .so.1.0 .so.1.0.0
  3. 手工设置Windows服务依赖关系
  4. 什么是企业宣传型网站?
  5. 电缆规格型号介绍一览表
  6. 51单片机--SIM800C准备阶段<1>
  7. 水果乐园java 闯关游戏免费下载_水果乐园游戏下载-水果乐园游戏安卓版 v1.0_手机乐园...
  8. hud 1013 求一个数的数字根(合九法||模拟)
  9. Oracle内置SQL函数-分类整理大全
  10. java 冬季运动会_2015关于冬天的作文:寒冷的冬天续写