WAVE文件格式是Microsoft为存储多媒体的RIFF规范的一部分。一个RIFF文件以一个文件头开始,然后是一系列的数据块。一个WAVE文件常常仅由一个WAVE块构成,WAVE块包含一个说明格式的fmt块和存储取样信息的数据块。

标准WAVE文件格式

偏移

长度(字节)

变量名

描述

备注

0

4

ChunkID

ASCII字符“RIFF”,大端形式

RIFF头

4

4

ChunkSize

36+SubChunk2Size,即:4 + (8 + SubChunk1Size) + (8 + SubChunk2Size),指除文件前8字节后的字节数

RIFF头

8

4

Format

ASCII字符“WAVE”,大端形式

RIFF头

12

4

Subchunk1ID

ASCII字符“fmt ”,大端形式

Fmt子块

16

4

Subchunk1Size

对于PCM文件为16。指除前8字节的Fmt块大小

Fmt子块

20

2

AudioFormat

PCM=1,其他值指以某种形式压缩(见表2)

Fmt子块

22

2

NumChannels

单声道=1,立体声=2

Fmt子块

24

4

SampleRate

取样率,取16000

Fmt子块

28

4

ByteRate

SampleRate * NumChannels * BitsPerSample/8

Fmt子块

32

2

BlockAlign

NumChannels * BitsPerSample/8,所有声道中一个样本数据的字节总数

Fmt子块

34

2

BitsPerSample

8或16

Fmt子块

36

4

Subchunk2ID

ASCII字符串“data”

Data子块

40

4

Subchunk2Size

NumSamples * NumChannels * BitsPerSample/8,指数据中的字节数

Data子块

44

*

Data

实际的声音数据

 

表2 Format Code 格式编码

格式编码

预处理符号

数据

0x0001

WAVE_FORMAT_PCM

PCM

0x0003

WAVE_FORMAT_IEEE_FLOAT

Ieee float

0x0006

WAVE_FORMAT_ALAW

8bits ITU-T G.711 A-law

0x0007

WAVE_FORMAT_MULAW

8-bit ITU-T G.711 u-law

0xFFFE

WAVE_FORMAT_EXTENSIBLE

 

注意:

1)WAVE文件默认的字节顺序是小端顺序,若是大端顺序用RIFX代替RIFF标识

2)取样数据必须是偶数字节

3)8位取样数据被存储为无符号数,从0到255.16位的取样数据被存储为补码,从-32768到32767

4)在wave数据流中可能有添加的子块。每一个子块有char SubChunkID[4],unsigned long SubChunkSize和SubChunkSize字节的数据

5)RIFF代表Resource Interchange File Format

转自:http://blog.csdn.net/foxwit/article/details/5802389

(转)WAVE PCM 声音文件格式的更多相关文章

  1. 通过WinAPI播放PCM声音

    在Windows平台上,播放PCM声音使用的API通常有如下两种. waveOut and waveIn:传统的音频MMEAPI,也是使用的最多的 xAudio2:C++/COM API,主要针对游戏 ...

  2. 分享python分析wave, pcm音频文件

    最近研究的,我用的是python3.3, 用matplotlib画图, 下面代码演示分析pcm文件,如果是wave文件,把wave的文件头去掉就是pcm文件了. 代码如下 # -*- coding:u ...

  3. wave文件(*.wav)格式、PCM数据格式

    1. 音频简介 经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等. 44100HZ 16bit stereo: 每秒钟有 44100 次采 ...

  4. wave文件(*.wav)格式、PCM数据格式, goldwave 可以播放pcm raw audio

    1. 音频简介 经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等. 44100HZ 16bit stereo: 每秒钟有 44100 次采 ...

  5. PCM文件格式简单介绍

    PCM文件格式简单介绍 PCM文件:模拟音频信号经模数转换(A/D变换)直接形成的二进制序列,该文件没有附加的文件头和文件结束标志.Windows的Convert工具能够把PCM音频格式的文件转换成M ...

  6. wav文件格式分析(一)

    (一)概述 WAV为微软公司(Microsoft)开发的一种声音文件格式,它符合RIFF(Resource Interchange File Format)文件规范: (二)音频知识 1.常见的声音文 ...

  7. 【转】Python处理wave文件

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

  8. 痞子衡嵌入式:PCM编码与Waveform音频文件(.wav)格式详解

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是PCM编码及Waveform音频文件格式. 嵌入式里有时候也会和音频打交道,比如最近特别火的智能音箱产品,离不开前端的音频信号采集.降噪 ...

  9. 转wave 文件解析

    转 1 WAVE 文件格式分析 WAVE 文件作为多媒体中使用的声音波形文件格式之一,它是以RIFF(Resource Interchange File Format)格式为标准的.每个WAVE文件的 ...

随机推荐

  1. Python 使用pymysql连接MySQL

    由于 MySQLdb 模块还不支持 Python3.x,所以 Python3.x 如果想连接MySQL需要安装 pymysql 模块. pymysql 模块可以通过 pip 安装.但如果你使用的是 p ...

  2. django rest_framework入门四-类视图APIView

    上节,我们使用函数视图,用了@api_view装饰器来修饰,这一节,我们介绍类视图APIView,显然,类视图更符合面向对象的原则. 1.使用类视图APIView重写API 类视图APIView,取代 ...

  3. SQLite - Java

    安装 在 Java 程序中使用 SQLite 之前,我们需要确保机器上已经有 SQLite JDBC Driver 驱动程序和 Java.可以查看 Java 教程了解如何在计算机上安装 Java.现在 ...

  4. Git详解之Git分支

    Git 分支 几乎每一种版本控制系统都以某种形式支持分支.使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作.在很多版本控制系统中,这是个昂贵的过程,常常需要创建一个源代码目录的 ...

  5. Python3.5爬取cbooo.cn数据并且同步到mysql中

    #!/usr/local/bin/python # -*- coding: utf-8 -*- # Python: 3.5 # Author: wucl(),zhenghai.zhang # Prog ...

  6. Python写入连接mysql失败

    执行如下连接数据库的语句: engine = create_engine('mysql://root:root@127.0.0.1/stock?charset=utf8') 报错如下: ImportE ...

  7. postgresql相关命令

    1,打开命令窗口: 2,查看数据库用户:\du 3,列出所有数据库名:\l或者SELECT datname FROM pg_database; 4,切换某个数据库下面的某个用户下面:\c 数据库名 用 ...

  8. java基础篇---Servlet过滤器

    Servlet过滤器从字面上的字意理解为景观一层次的过滤处理才达到使用的要求,而其实Servlet过滤器就是服务器与客户端请求与响应的中间层组件,在实际项目开发中Servlet过滤器主要用于对浏览器的 ...

  9. docker探索-使用docker service管理swarm(十一 )

    本文转自:https://www.cnblogs.com/atuotuo/p/6265541.html 1.创建一个 Docker service $ docker service create -- ...

  10. 前端常用功能记录(三)—datatables表格初始化(转)

    数据源 我经常使用的有两种,一种是JavaScript 中的数组,通过在初始化对象中传递一个名为 aaData 的数组,同样可以提供表格数据,前缀 aa 说明这是一个数组的数组,外层的数组表示表格的行 ...