搜档网
当前位置:搜档网 › WAV文件操作

WAV文件操作

WAV文件操作
WAV文件操作

WAVE文件格式剖析

WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。RIFF是英文Resource Interchange File Format的缩写,每个WAVE文件的头四个字节便是“RIFF”。WAVE文件由文件头和数据体两大部分组成。其中文件头又分为RIFF/WAV文件标识段和声音数据格式说明段两部分。WAVE文件各部分内容及格式见附表。

常见的声音文件主要有两种,分别对应于单声道(11.025KHz采样率、8Bit的采样值)和双声道(44.1KHz采样率、16Bit的采样值)。采样率是指:声音信号在“模→数”转换过程中单位时间内采样的次数。采样值是指每一次采样周期内声音模拟信号的积分值。

对于单声道声音文件,采样数据为八位的短整数(short int

00H-FFH);而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int),高八位和低八位分别代表左右两个声道。

WAVE文件数据块包含以脉冲编码调制(PCM)格式表示的样本。WAVE文件是由样本组织而成的。在单声道WAVE文件中,声道0代表左声道,声道1代表右声道。在多声道WAVE文件中,样本是交替出现的。

WAVE文件格式说明表

PCM数据的存放方式:

WAVE文件的每个样本值包含在一个整数i中,i的长度为容纳指定样本长度所需的最小字节数。首先存储低有效字节,表示样本幅度的位放在i的高有效位上,剩下的位置为0,这样8位和16位的PCM波形样本的数据格式如下所示。

运用多媒体WAV文件格式二三例

https://www.sodocs.net/doc/eb16044853.html, 2000/11/20 软件世界徐济仁陈家松

多媒体技术近年来发展很快,较好品质的声卡可以提供16位的立体声及44KHZ的播放录制能力,它不仅可以提供原音逼真的取样,其合成的音质也十分理想,有的声卡还加入了数字信号处理器,可编程控制的DSP具有强大的运算能力,它可以用来作声音信息的压缩和一些特殊效果的处理。具有此功能的声卡提供的WAV文件提供的语音信息可以满足语音特征识别的要求。

1.1 RIFF文件和WAV文件格式

在Windows环境下,大部分的多媒体文件都依循着一种结构来存放信息,这种结构称为"资源互换文件格式"(Resources lnterchange File Format),简称RIFF。例如声音的WAV文件、视频的AV1文件等等均是由此结构衍生出来的。RIFF可以看做是一种树状结构,其基本构成单位为chunk,犹如树状结构中的节点,每个chunk由"辨别码"、"数据大小"及"数据"所组成。

辨别码由4个ASCII码所构成,数据大小则标示出紧跟其后数据的长度(单位为Byte),而数据大小本身也用掉4个Byte,所以事实上一个chunk的长度为数据大小加8。一般而言,chunk本身并不允许内部再包含chunk,但有两种例外,分别为以"RIFF"及"L1ST"为辨别码的chunk。而针对此两种chunk,RIFF又从原先的"数据"中切出4个Byte。此4个Byte称为"格式辨别码",然而RIFF又规定文件中仅能有一个以"RIFF"为辨别码的chunk。

只要依循此一结构的文件,我们均称之为RIFF档。此种结构提供了一种系统化的分类。如果和MS一DOS文件系统作比较,"RIFF"chunk就好比是一台硬盘的根目录,其格式辨别码便是此硬盘的逻辑代码(C:或D:),而"L1ST"chunk即为其下的子目录,其他的chunk则为一般的文件。至于在RIFF文件的处理方面,微软提供了相关的函数。

视窗下的各种多媒体文件格式就如同在磁盘机下规定仅能放怎样的目录,而在该目录下仅能放何种数据。

WAV为WAVEFORM(波形)的缩写。声音文件的结构如图1所示,"RIFF"的格式辨别码为"WAVE"。整个文件由两个chunk所组成:辨别码"fmt"(注意,最后一个是空白字符!)及"data"。

在"fmt"的chunk下包含了一个PCMWAVEFORMAT数据结构,其定义如下:

typedef struct pcmwaveformat - tag {

WAVEFORMAT wf ;

WORD wBitsPerSample;

} PCMWAVEFORMAT;

typedef struct waveformat - tag {

WORD wFormatTag ;

WORD nChannels;

DWORD nSamplesPerSec;

DWORD nAvgBytesperSec;

WORD nBlockAlign;

} WAVEFORMAT;

其意义分别为:

wFormatTag:记录着此声音的格式代号,例如WAVE_FORMAT_PCM,

WAVE_F0RAM_ADPCM等等。

nChannels:记录声音的频道数。

nSamp1esPerSec:记录每秒取样数。

nAvgBytesPerSec:记录每秒的数据量。

nBlockA1ign:记录区块的对齐单位。

wBitsPerSample:记录每个取样所需的位元数。

"data"Chunk包含真正的声音数据。Window目前仅提供WAVE_FORMAT_PCM一种数据格式,所代表的意义是脉派编码调变(Pu1se Code Modulation)。针对此格式,Windows定义了在"data"的chunk中数据的存放情形,图2中列出了四种不同频道数及取样所需的位元数以及位元位置的安排。

"RIFF" 频道0 频道0 频道0 频道0

xxxx nChannels=1,wBitsPerSample=8

"WAVE" 频0(左) 频道1(右) 频道0(左) 频道1 (右)

"fmt "

nChannels=2,wBitsPerSample=8

sizeof(PCMWAVEFORMAT)

struct of PCMWAVEFORMAT 频道0(低位) 频道0(高位) 频道0(低位)频道0(高位)

"data" nChannels=1,wBitsPerSample=16

xxxx 频道0(低位) 频道0(高位) 频道0(低位)频道0(高位)

(低位) (高位) (低位) (高位)

wave form data

nChannels=2,wBitsPerSample=16

图1 WAV文件结构图2 PCM文件中位元安排方式

第一排表示单声道8位元,第二排表示双声道8位元,第三排表示单声道16位元,第四排表示双声道16位元。8位元代表音量大小由8个位元所表示,16位元则代表音量大小由16个位元所表示。理论上8位元可以表示0~255,16位元可表示0~65536,不过windows却定16位元其值的范围从-32168~32167。此外尚有一点要注意的是,0并不一定代表无声,而是由中间的数值来决定,也就是在8位元时为128,16位元时为0才是无声。所以,若程序设计时需放入无声的数据,糯特别注意声音格式是16或是8位元,以放入适当的值。

1.2 WAV文件信息的具体应用

WAV文件中包括了对原始声音的高速率采样,并且以WAVE_PCM_FORMAT脉派编码调变格式,我们可以在VISUAL C++程序中实现,在读出WAVEHDR文件头之后,下面就是原始声音的高速率采样信息,我们可以对它作多方面的信息处理。

1.2.1 波形显示。

我们可以以时域-幅度的方式显示出原始声音的波形,这是最简单同时也是最直接

的信息处理方式。在时域范围内,我们可以观察该信号波形是否连续,中间是否有跳变

等。

1.2.2频谱显示

我们可以以频域-幅度的方式显示出原始声音的频谱,在对原始信号经过FFT变换

之后,可以得到该信号的频谱,迚而得到该信号的能量集中带,分布特征,谱对称系数

等等。

1.2.3 用于语音信号识别

讲话者的个体识别是语音信号处理的一个重要内容,但它的一个前提条件是必须提

供语音信号的数字波形,通常的方法是将原始的语音信号迚行放大、抗混叠滤波、A/D

采样、数值编码,最终得到语音信号的数字波形,通常多采用硬件处理,费时费力,如

果我们借助非常成熟的声卡技术,将WAV文件打开,就非常方便地得到语音信号的数

字波形,为下一步迚行语音信号识别提供良好的前端预处理。

C++实现CD抓轨转WAV

作者:黄利龙

下载源代码

现在介绍一下C++实现CD抓轨转WAV,CD抓轨的方法有好几种,现在介绍其中一种。我们可以通过API函数CreateFile获得设备句柄,再用API函数DeviceIoControl来实现对设备的访问获取信息。再此还会用到WAVE文件结构WAVEFORMATEX,再把读到的信息写到文件里生成WAVE 格式的文件。

我们要用到的头文件有: ntddcdrm.h(NTDDK开发包) winioctl.h Mmreg.h

1、搜索光驱

我们可以用GetDriveType来判断设备类型,5为CDROM类型。返回类型可以参看MSDN,里面有详细介绍。

2、打开设备

用CreateFile获得设备句柄,例子如下:

HANDLE m_hDevice;

CString FileName=”F:”;

m_hDevice =CreateFile("\\\\.\\"+FileName, // 文件名路径

GENERIC_READ, // 读写方式

FILE_SHARE_READ | FILE_SHARE_WRITE, // 共享方式

NULL, // 默认的安全描述符OPEN_EXISTING, // 创建方式

0, // 不需设置文件属性NULL); // 不需参照模板文件3、读取CD参数

得到了设备句柄,我们就可以用DeviceIoControl来获息相关信息.

DeviceIoControl函数原型:

BOOL DeviceIoControl(

HANDLE hDevice, // 设备句柄

DWORD dwIoControlCode, // 控制码

LPVOID lpInBuffer, // 输入数据缓冲区指针

DWORD nInBufferSize, // 输入数据缓冲区长度

LPVOID lpOutBuffer, // 输出数据缓冲区指针

DWORD nOutBufferSize, // 输出数据缓冲区长度

LPDWORD lpBytesReturned, // 输出数据实际长度单元长度

LPOVERLAPPED lpOverlapped // 重叠操作结构指针

);

4、获取曲目

使用IOCTL_CDROM_READ_TOC控制码输出CDROM_TOC结构

BOOL bResult;

DWORD dwOutBytes;

CDROM_TOC CdromTOC; //曲目信息结构,详细请看MSDN

bResult=DeviceIoControl(m_hDevice,

IOCTL_CDROM_READ_TOC,NULL,0,

&CdromTOC,

sizeof(CdromTOC),

&dwOutBytes,

(LPOVERLAPPED)NULL);

5、获取曲目始点

DWORD CCdToWavDlg::GetStartSector(int track)

{

return (CdromTOC.TrackData[track-1].Address[1]*60*75 +

CdromTOC.TrackData[track-1].Address[2]*75 +

CdromTOC.TrackData[track-1].Address[3])-150;

}

6、获取曲目终点

DWORD CCdToWavDlg::GetEndSector(int track)

{

return (CdromTOC.TrackData[track].Address[1]*60*75 +

CdromTOC.TrackData[track].Address[2]*75 +

CdromTOC.TrackData[track].Address[3])-151;

}

7、读取曲目信息

使用IOCTL_CDROM_RAW_READ输入RAW_READ_INFO结构信息,输出来获取区域内容

BOOL CCdToWavDlg::ReadSector(int sector,BYTE Buffer[], int NumSectors)

{

DWORD dwOutBytes;

RAW_READ_INFO rri; //结构详细请看MSDN

rri.TrackMode =(TRACK_MODE_TYPE)2;

rri.SectorCount = (DWORD)NumSectors;

rri.DiskOffset =(DWORD64)(sector*CB_CDROMSECTOR);

if (DeviceIoControl(m_hDevice,IOCTL_CDROM_RAW_READ,

&rri,

sizeof(rri),

Buffer,

(DWORD)NumSectors*CB_AUDIO,&dwOutBytes,

(LPOVERLAPPED)NULL)) return true;

return false;

}

8、文件生成

WAVE文件是非常简单的一种RIFF文件,它的格式类型为"WAVE"。RIFF块包含两个子块,这两个子块的ID分别是"fmt"和"data",其中"fmt"子块由结构WAVEFORMATEX所组成,其子块的大小就是sizeofof(WAVEFORMATEX),数据组成就是WAVEFORMATEX结构中的数据。WAVE文件的结构如下图所示:

WAVEFORMATEX结构原型:

typedef struct

{

WORD wFormatTag; //编码格式,包括WAVE_FORMAT_PCM,WAVEFORMAT_ADPCM等

WORD nChannels; //声道数,单声道为1,双声道为2

DWORD nSamplesPerSec; //采样频率

DWORD nAvgBytesPerSec; //每秒的数据量

WORD nBlockAlign; //块对齐

WORD wBitsPerSample; //WAVE文件的采样大小

WORD cbSize;

} WAVEFORMATEX; *PWAVEFORMATEX;

9、定义WAVE文件结构

DWORD m_WaveHeaderSize = 38;

DWORD m_WaveFormatSize = 18;

DWORD m_AudioDataSize =0;

DWORD m_WrittenBytes = 0;

WAVEFORMATEX m_WaveFormatEx;

m_WaveFormatEx.wFormatTag=WAVE_FORMAT_PCM ;

m_WaveFormatEx.nSamplesPerSec=48000;

m_WaveFormatEx.wBitsPerSample=16;

m_WaveFormatEx.nChannels=2;

m_WaveFormatEx.cbSize=0;

m_WaveFormatEx.nBlockAlign=m_WaveFormatEx.nChannels*(m_WaveFormatEx.wBitsPerSample/8);

m_WaveFormatEx.nAvgBytesPerSec=m_WaveFormatEx.nSamplesPerSec*m_WaveFormatEx.nBlockAlign;

10、创建新文件

CFile m_file;

CFileException fileException;

CString m_csFileName= m_SavePath;

m_file.Open(m_csFileName,CFile::modeCreate|CFile::modeReadWrite, &fileException);

int StartSect=GetStartSector(m_List.GetCurSel()+1);

int EndSect=GetEndSector(m_List.GetCurSel()+1);

DWORD Bytes2Read=(EndSect - StartSect)*CB_AUDIO;

m_AudioDataSize=Bytes2Read;

BYTE Data[CB_AUDIO*NSECTORS];

11、写入WAV文件头

WAV文件头一定要按顺序写入

m_file.SeekToBegin();

m_file.Write("RIFF",4);

unsigned int Sec=(m_AudioDataSize + m_WaveHeaderSize);

m_file.Write(&Sec,sizeof(Sec));

m_file.Write("WAVE",4);

m_file.Write("fmt ",4);

m_file.Write(&m_WaveFormatSize,sizeof(m_WaveFormatSize));

m_file.Write(&m_WaveFormatEx.wFormatTag,sizeof(m_WaveFormatEx.wFormatTag));

m_file.Write(&m_WaveFormatEx.nChannels,sizeof(m_WaveFormatEx.nChannels));

m_file.Write(&m_WaveFormatEx.nSamplesPerSec,sizeof(m_WaveFormatEx.nSamplesPerSec));

m_file.Write(&m_WaveFormatEx.nAvgBytesPerSec,sizeof(m_WaveFormatEx.nAvgBytesPerSec));

m_file.Write(&m_WaveFormatEx.nBlockAlign,sizeof(m_WaveFormatEx.nBlockAlign));

m_file.Write(&m_WaveFormatEx.wBitsPerSample,sizeof(m_WaveFormatEx.wBitsPerSample));

m_file.Write(&m_WaveFormatEx.cbSize,sizeof(m_WaveFormatEx.cbSize));

m_file.Write("data",4);

m_file.Write(&m_AudioDataSize,sizeof(m_AudioDataSize));

12、写入音频数据

把音频数据放到WAV文件头后写入

DWORD m_seek=46; //文件头长度为46个字,必须从46后写入

for (int sector = StartSect; (sector < EndSect); sector+=NSECTORS)

{

int Sectors2Read = ( (sector + NSECTORS) < EndSect )?NSECTORS:(EndSect-sector);

if (ReadSector(sector, Data, Sectors2Read))

{

m_file.Write(Data,CB_AUDIO*Sectors2Read);

m_file.Seek(m_seek+=CB_AUDIO*Sectors2Read,CFile::begin);

}

}

m_file.Close();

详细请看源代码。以上在VC7+Window2000+NTDDK 测试通过。

有关音频编码的知识与技术参数

自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码,即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。

1、什么是采样率和采样大小(位/bit)?

声音其实是一种能量波,因此也有频率和振幅的特征,频率对应于时间轴线,振幅对应于电平轴线。波是无限光滑的,弦线可以看成由无数点组成,由于存储空间是相对有限的,数字编码过程中,必须对弦线的点进行采样。采样的过程就是抽取某点的频率值,很显然,在一秒中内抽取的点越多,获取得频率信息更丰富,为了复原波形,一次振动中,必须有2个点的采样,人耳能够感觉到的最高频率为20kHz,因此要满足人耳的听觉要求,则需要至少每秒进行40k次采样,用40kHz表达,这个40kHz就是采样率。我们常见的CD,采样率为44.1kHz。光有频率信息是不够的,我们还必须获得该频率的能量值并量化,用于表示信号强度。量化电平数为2的整数次幂,我们常见的CD位16bit的采样大小,即2的16次方。采样大小相对采样率更难理解,因为要显得抽象点,举个简单例子:假设对一个波进行8次采样,采样点分别对应的能量值分别为A1-A8,但我们只使用2bit的采样大小,结果我们只能保留A1-A8中4个点的值而舍弃另外4个。如果我们进行3bit的采样大小,则刚好记录下8个点的所有信息。采样率和采样大小的值越大,记录的波形更接近原始信号。

2、有损和无损

根据采样率和采样大小可以得知,相对自然界的信号,音频编码最多只能做到无限接近,至少目前的技术只能这样了,相对自然界的信号,任何数字音频编码方案都是有损的,因为无法完全还原。在计算机应用中,能够达到最高保真水平的就是PCM编码,被广泛用于素材保存及音乐欣赏,CD、DV D以及我们常见的WA V文件中均有应用。因此,PCM约定俗成了无损编码,因为PCM代表了数字音频中最佳的保真水准,并不意味着PCM就能够确保信号绝对保真,PCM也只能做到最大程度的无限接近。我们而习惯性的把MP3列入有损音频编码范畴,是相对PCM编码的。强调编码的相对性的有损和无损,是为了告诉大家,要做到真正的无损是困难的,就像用数字去表达圆周率,不管精度多高,也只是无限接近,而不是真正等于圆周率的值。

3、为什么要使用音频压缩技术

要算一个PCM音频流的码率是一件很轻松的事情,采样率值×采样大小值×声道数b ps。一个采样率为44.1KHz,采样大小为16bit,双声道的PCM编码的WA V文件,它的数据速率则为44.1K×16×2 =1411.2 Kbps。我们常说128K的MP3,对应的WA V的参数,就是这个1411.2 Kbps,这个参数也被称为数据带宽,它和adsl/12.shtml' target='_blank' class='article'>ADSL中的带宽是一个概念。将码率除以8,就可以得到这个WA V的数据速率,即176.4KB/s。这表示存储一秒钟采样率为44.1KHz,采样大小为16bit,双声道的PCM编码的音频信号,需要176.4KB的空间,1分钟则约为10.34M,这对大部分用户是不可接受的,尤其是喜欢在电脑上听音乐的朋友,要降低磁盘占用,只有2种方法,降低采样指标或者压缩。降低指标是不可取的,因此专家们研发了各种压缩方案。由于用途和针对的目标市场不一样,各种音频压缩编码所达到的音质和压缩比都不一样,在后面的文章中我们都会一一提到。有一点是可以肯定的,他们都压缩过。

4、频率与采样率的关系

采样率表示了每秒对原始信号采样的次数,我们常见到的音频文件采样率多为

44.1KHz,这意味着什么呢?假设我们有2段正弦波信号,分别为20Hz和20KHz,长度均为一秒钟,以对应我们能听到的最低频和最高频,分别对这两段信号进行40KHz 的采样,我们可以得到一个什么样的结果呢?结果是:20Hz的信号每次振动被采样了40K/20=2000次,而20K的信号每次振动只有2次采样。显然,在相同的采样率下,记录低频的信息远比高频的详细。这也是为什么有些音响发烧友指责CD有数码声不够真实的原因,CD的44.1KHz采样也无法保证高频信号被较好记录。要较好的记录高频信号,看来需要更高的采样率,于是有些朋友在捕捉CD音轨的时候使用48KHz的采样率,这是不可取的!这其实对音质没有任何好处,对抓轨软件来说,保持和CD提供的44.1KHz一样的采样率才是最佳音质的保证之一,而不是去提高它。较高的采样率只有相对模拟信号的时候才有用,如果被采样的信号是数字的,请不要去尝试提高采样率。

5、流特征

随着网络的发展,人们对在线收听音乐提出了要求,因此也要求音频文件能够一边读一边播放,而不需要把这个文件全部读出后然后回放,这样就可以做到不用下载就可以实现收听了。也可以做到一边编码一边播放,正是这种特征,可以实现在线的直播,架设自己的数字广播电台成为了现实。

WAV文件格式的应用举例

多媒体技术近年来发展很快,较好品质的声卡可以提供16位的立体声及44KHZ的播放录制能

力,它不仅可以提供原音逼真的取样,其合成的音质也十分理想,有的声卡还加入了数字信号

处理器,可编程控制的DSP具有强大的运算能力,它可以用来作声音信息的压缩和一些特殊效

果的处理。具有此功能的声卡提供的WA V文件提供的语音信息可以满足语音特征识别的要求。

1.1 RIFF文件和WA V文件格式

在Windows环境下,大部分的多媒体文件都依循着一种结构来存放信息,这种结构称为"

资源互换文件格式"(Resources lnterchange File Format),简称RIFF。例如声音的WA V文件、视

频的A V1文件等等均是由此结构衍生出来的。RIFF可以看做是一种树状结构,其基本构成单位

为chunk,犹如树状结构中的节点,每个chunk由"辨别码"、"数据大小"及"数据"所组成。

辨别码由4个ASCII码所构成,数据大小则标示出紧跟其后数据的长度(单位为Byte),而数据大小本身也用掉4个Byte,所以事实上一个chunk的长度为数据大小加8。一般而言,chunk

本身并不允许内部再包含chunk,但有两种例外,分别为以"RIFF"及"L1ST"为辨别码的chunk。

而针对此两种chunk,RIFF又从原先的"数据"中切出4个Byte。此4个Byte称为"格式辨别码",然而RIFF又规定文件中仅能有一个以"RIFF"为辨别码的chunk。

只要依循此一结构的文件,我们均称之为RIFF档。此种结构提供了一种系统化的分类。如果和MS一DOS文件系统作比较,"RIFF"chunk就好比是一台硬盘的根目录,其格式辨别码便是此硬盘的逻辑代码(C:或D:),而"L1ST"chunk即为其下的子目录,其他的chunk则为一般的文件。至于在RIFF文件的处理方面,微软提供了相关的函数。视窗下的各种多媒体文件格式就如同在磁盘机下规定仅能放怎样的目录,而在该目录下仅能放何种数据。

WA V为WA VEFORM(波形)的缩写。声音文件的结构如图1所示,"RIFF"的格式辨别码为"WA VE"。整个文件由两个chunk所组成:辨别码"fmt"(注意,最后一个是空白字符!)及"data"。

在"fmt"的chunk下包含了一个PCMWA VEFORMA T数据结构,其定义如下:

typedef struct pcmwaveformat - tag {

WA VEFORMA T wf ;

WORD wBitsPerSample;

} PCMWA VEFORMA T;

typedef struct waveformat - tag {

WORD wFormatTag ;

WORD nChannels;

DWORD nSamplesPerSec;

DWORD nAvgBytesperSec;

WORD nBlockAlign;

} WA VEFORMAT;

其意义分别为:

wFormatTag:记录着此声音的格式代号,例如WA VE_FORMAT_PCM,WA VE_F0RAM_ADPCM等等。

nChannels:记录声音的频道数。

nSamp1esPerSec:记录每秒取样数。

nAvgBytesPerSec:记录每秒的数据量。

nBlockA1ign:记录区块的对齐单位。

wBitsPerSample:记录每个取样所需的位元数。

"data"Chunk包含真正的声音数据。Window目前仅提供WA VE_FORMA T_PCM一种数据格式,所代表的意义是脉派编码调变(Pu1se Code Modulation)。针对此格式,Windows定义了在"data"的chunk中数据的存放情形,图2中列出了四种不同频道数及取样所需的位元数以及位元位置的安排。

"RIFF" 频道0 频道0 频道0 频道0

xxxx nChannels=1,wBitsPerSample=8

"WA VE" 频0(左) 频道1(右) 频道0(左) 频道1 (右)

"fmt "

nChannels=2,wBitsPerSample=8

sizeof(PCMWA VEFORMAT)

struct of PCMWA VEFORMA T 频道0(低位) 频道0(高位) 频道0(低位)频道0(高位)

"data" nChannels=1,wBitsPerSample=16

xxxx 频道0(低位) 频道0(高位) 频道0(低位)频道0(高位)

(低位) (高位) (低位) (高位)

wave form data

nChannels=2,wBitsPerSample=16

图1 WA V文件结构图2 PCM文件中位元安排方式

第一排表示单声道8位元,第二排表示双声道8位元,第三排表示单声道16位元,第四排表示双声道16位元。8位元代表音量大小由8个位元所表示,16位元则代表音量大小由16个位元所表示。理论上8位元可以表示0~255,16位元可表示0~65536,不过windows却定16位元其值的范围从-32168~32167。此外尚有一点要注意的是,0并不一定代表无声,而是由中间的数值来决定,也就是在8位元时为128,16位元时为0才是无声。所以,若程序设计时需放入无声的数据,糯特别注意声音格式是16或是8位元,以放入适当的值。

1.2 WA V文件信息的具体应用

WA V文件中包括了对原始声音的高速率采样,并且以WA VE_PCM_FORMA T脉派编码调变格式,我们可以在VISUAL C++程序中实现,在读出WA VEHDR文件头之后,下面就是原始声音的高速率采样信息,我们可以对它作多方面的信息处理。

1.2.1 波形显示。

我们可以以时域-幅度的方式显示出原始声音的波形,这是最简单同时也是最直接的信息处理方式。在时域范围内,我们可以观察该信号波形是否连续,中间是否有跳变等。

1.2.2频谱显示

我们可以以频域-幅度的方式显示出原始声音的频谱,在对原始信号经过FFT变换之后,可以得到该信号的频谱,进而得到该信号的能量集中带,分布特征,谱对称系数等等。

1.2.3 用于语音信号识别

讲话者的个体识别是语音信号处理的一个重要内容,但它的一个前提条件是必须提供语音信号的数字波形,通常的方法是将原始的语音信号进行放大、抗混叠滤波、A/D采样、数值编码,最终得到语音信号的数字波形,通常多采用硬件处理,费时费力,如果我们借助非常成熟的声卡技术,将WA V文件打开,就非常方便地得到语音信号的数字波形,为下一步进行语音信号识别提供良好的前端预处理。

wav音频格式

多媒体技术近年来发展很快,较好品质的声卡可以提供16位的立体声及44KHZ的播放录制能力,它不仅可以提供原音逼真的取样,其合成的音质也十分理想,有的声卡还加入了数字信号处理器,可编程控制的DSP具有强大的运算能力,它可以用来作声音信息的压缩和一些特殊效果的处理。具有此功能的声卡提供的WAV文件提供的语音信息可以满足语音特征识别的要求。 RIFF概念 在Windows环境下,大部分的多媒体文件都依循着一种结构来存放信息,这种结构称为"资源互换文件格式"(Resources lnterchange File Format),简称RIFF。例如声音的WAV 文件、视频的AV1文件等等均是由此结构衍生出来的。RIFF可以看做是一种树状结构,其基本构成单位为chunk,犹如树状结构中的节点,每个chunk由"辨别码"、"数据大小"及"数据"所组成。 图一、块的结构示意图 辨别码由4个ASCII码所构成,数据大小则标示出紧跟其后数据的长度(单位为Byte),而数据大小本身也用掉4个Byte,所以事实上一个chunk的长度为数据大小加8。一般而言,chunk本身并不允许内部再包含chunk,但有两种例外,分别为以"RIFF"及"L1ST"为辨别码

的chunk。而针对此两种chunk,RIFF又从原先的"数据"中切出4个Byte。此4个Byte 称为"格式辨别码",然而RIFF又规定文件中仅能有一个以"RIFF"为辨别码的chunk。 图二、RIFF/LIST块结构 只要依循此一结构的文件,我们均称之为RIFF档。此种结构提供了一种系统化的分类。如果和MS一DOS文件系统作比较,"RIFF"chunk就好比是一台硬盘的根目录,其格式辨别码便是此硬盘的逻辑代码(C:或D:),而"L1ST"chunk即为其下的子目录,其他的chunk则为一般的文件。至于在RIFF文件的处理方面,微软提供了相关的函数。视窗下的各种多媒体文件格式就如同在磁盘机下规定仅能放怎样的目录,而在该目录下仅能放何种数据。 WAV文件格式 WAVE文件是非常简单的一种RIFF文件,它的格式类型为"WAVE"。RIFF块包含两个子块,这两个子块的ID分别是"fmt"和"data",其中"fmt"子块由结构PCMWAVEFORMAT所组成,其子块的大小就是sizeofof(PCMWAVEFORMAT),数据组成就是PCMWAVEFORMAT结构中的数据。

所有类型文件的文件头标志

各类文件的文件头标志 1、从Ultra-edit-32中提取出来的 JPEG (jpg),文件头:FFD8FF PNG (png),文件头:89504E47 GIF (gif),文件头:47494638 TIFF (tif),文件头:49492A00 Windows Bitmap (bmp),文件头:424D CAD (dwg),文件头:41433130 Adobe Photoshop (psd),文件头:38425053 Rich Text Format (rtf),文件头:7B5C727466 XML (xml),文件头:3C3F786D6C HTML (html),文件头:68746D6C3E Email [thorough only] (eml),文件头:44656C69766572792D646174653A Outlook Express (dbx),文件头:CFAD12FEC5FD746F Outlook (pst),文件头:2142444E MS Word/Excel (xls.or.doc),文件头:D0CF11E0 MS Access (mdb),文件头:5374616E64617264204A WordPerfect (wpd),文件头:FF575043 Postscript (eps.or.ps),文件头:252150532D41646F6265 Adobe Acrobat (pdf),文件头:255044462D312E Quicken (qdf),文件头:AC9EBD8F Windows Password (pwl),文件头:E3828596 ZIP Archive (zip),文件头:504B0304 RAR Archive (rar),文件头:52617221

wav文件头

一、各种W AV文件头格式 WAV文件也分好几个种类,相应的非数据信息存储在文件头部分,以下是各种WAV文件头格式。表18KHz采样、16比特量化的线性PCM语音信号的WAV文件头格式表(共44字节) 表28KHz采样、8比特A律量化的PCM语音信号的WAV文件头格式表(共58字节) 表38KHz采样、8比特U律量化的PCM语音信号的WAV文件头格式表(共58字节)

表4ADPCM语音编码后的WAV文件头格式表(共90字节) 表5GSM(Global System for Mobile Communication全球移动通信系统)语音编码后的WAV文件头格式表(共60字节)

表6SBC(Sub-Band Coding子带编码)语音编码后的WAV文件头格式表(共58字节) 表7CELP(Code Excited Linear Prediction码激励线性预测编码——近10年来最成功的语音编码算法)语音编码后的WAV文件头格式表(共58字节) 概念1、读取WAV文件,填写WAVEFORMATEX结构 WAVEFORMATEX

typedef struct{WORD wFormatTag;WORD nChannels;DWORD nSamplesPerSec;DWORD nAvgBytesPe rSec; WORD nBlockAlign;WORD wBitsPerSample;WORD cbSize;} WAVEFORMATEX; 具体参数解释如下: wFormatTag:波形数据的格式,定义在MMREG.H文件中 nChannels:波形数据的通道数:单声道或立体声 nSamplesPerSec:采样率,对于PCM格式的波形数据,采样率有8.0 kHz,11.025kHz,22.05 kHz,44.1 kHz 等 nAvgBytesPerSec:数据率,对于PCM格式的波形数据,数据率等于采样率乘以每样点字节数nBlockAlign:每个样点字节数 wBitsPerSample:采样精度,对于PCM格式的波形数据,采样精度为8或16 cbSize:附加格式信息的数据块大小 概念2、定义设备头结构 以下WAVEHDR定义了指向波形数据缓冲区的设备头。 WAVEHDR typedef struct { LPSTR lpData; DWORD dwBufferLength; DWORD dwBytesRecorded; DWORD dwUser ; DWORD dwFlags; DWORD dwLoops; struct wavehdr_tag * lpNext; DWORD reserved; } WAVEHDR; lpData:波形数据的缓冲区地址 dwBufferLength:波形数据的缓冲区地址的长度 dwBytesRecorded:当设备用于录音时,标志已经录入的数据长度 dwUser:用户数据 dwFlags:波形数据的缓冲区的属性 dwLoops:播放循环的次数,仅用于播放控制中 lpNext和reserved均为保留值 注意:上述结构体以及我们在程序中所使用到的“HWAVEIN””HWAVEOUT”结构体均是系统已经存在的,我们只需要对其进行赋值即可。 二、PCM(44字节)的W AV文件头及其相关的编程方法 1、以下就经常见的一种格式PCM(44字节)的WAV文件头进行分析。 举例说明:kugoo下载的一首wav文件:魏三抹去泪水wav.wav(大小14,703,980 字节,时长2:46),文件头如下: ⑴地址00H-03H,值为“RIFF”标志;

WAV文件格式说明

WAV文件格式说明 ――杨少军WAVE文件是以RIFF(Resource Interchange File Format,"资源交互文件格式")格式来组织内部结构的。RIFF文件结构可以看作是树状结构,其基本构成是称为"块"(Chunk)的单元,最顶端是一个“RIFF”块,下面的每个块有“类型块标识(可选)”、“标志符”、“数据大小”及“数据”等项所组成,其中,format chunk和data chunk是必需要的,其它的chunk可选。在data chunk中存放的数据可能是压缩的也可能是非压缩的,这是根据format chunk中的wFormatTag来决定的,如果wFormatTag为WA VE_FORMA T_PCM 时,表示数据为非压缩的,其它的为压缩的。在非压缩格式时,存放的数据就是PCM码;而在采用压缩格式时,由于各个公司都有自己的压缩算法,没有一个统一的标准,所以压缩制式非常杂。下面主要以INTEL 公司的IMA-ADPCM压缩算法来讲W A V文件的结构。 1.WA V文件内部结构 在讲W A V文件结构时,主要以非压缩格式和以INTEL 公司的IMA-ADPCM压缩算法来论述。下面来谈谈INTEL 公司的IMA-ADPCM压缩算法。 IMA-ADPCM 是Intel公司首先开发的是一种主要针对16bit采样波形数据的有损压缩算法, 压缩比为4:1.它与通常的DVI-ADPCM是同一算法。它是将声音流中每次采样的16bit 数据以4bit 存储。具体的压缩算法可以参看其它文章。

在wFormatTag为W A VE_FORMA T_PCM时,没有Fact Chunk,也没有format chunk 中的wSamplesPerBlock,data chunk中紧跟着DataChunkSize后的就是PCM数据了。而在wFormatTag为WA VE_FORMA T_DVI_ADPCM时,表示采用INTEL 公司的IMA-ADPCM 压缩算法,W A V文件格式即为上表所示。 在采用IMA-ADPCM压缩算法时,“data”chuck中的数据是以block形式来组织的,把它叫做“段”,也就是说在进行压缩时,并不是依次把所有的数据进行压缩保存,而是分段进行的。Data Block一般是由block header (block头) 和data 两者组成的。其中block header是一个结构,它在单声道下的定义如下: Typedef struct { short sample0; //block中第一个采样值(未压缩) BYTE index; //上一个block最后一个index,第一个block的index=0; BYTE reserved; //尚未使用 }MonoBlockHeader; 有了blockheader的信息后,就可以不需要知道这个block前面和后面的数据而轻松地解出本block中的压缩数据。对于双声道,它的blockheader应该包含两个MonoBlockHeader 其定义如下: typedaf struct { MonoBlockHeader leftbher; MonoBlockHeader rightbher; }StereoBlockHeader; 在解压缩时,左右声道是分开处理的,所以必须有两个MonoBlockHeader;

常见文件类型文件头

JPEG (jpg),文件头:FFD8FF PNG (png),文件头:89504E47 GIF (gif),文件头:47494638 TIFF (tif),文件头:49492A00 Windows Bitmap (bmp),文件头:424D CAD (dwg),文件头:41433130 Adobe Photoshop (psd),文件头:38425053 Rich Text Format (rtf),文件头:7B5C727466 XML (xml),文件头:3C3F786D6C HTML (html),文件头:68746D6C3E Email [thorough only] (eml),文件头: 44656C69766572792D646174653A Outlook Express (dbx),文件头:CFAD12FEC5FD746F Outlook (pst),文件头:2142444E MS Word/Excel (xls.or.doc),文件头:D0CF11E0 MS Access (mdb),文件头:5374616E64617264204A WordPerfect (wpd),文件头:FF575043 Postscript (eps.or.ps),文件头:252150532D41646F6265 Adobe Acrobat (pdf),文件头:255044462D312E Quicken (qdf),文件头:AC9EBD8F Windows Password (pwl),文件头:E3828596 ZIP Archive (zip),文件头:504B0304

很好的资料-wav文件头汇总

一、各种WA V文件头格式

概念1、读取WAV文件,填写WAVEFORMATEX结构WAVEFORMATEX

typedef struct{WORD wFormatTag;WORD nChannels;DWORD nSamplesPerSec;DWORD nAvgBytesPe rSec;WORD nBlockAlign;WORD wBitsPerSample;WORD cbSize;}WAVEFORMATEX; 具体参数解释如下: wFormatTag:波形数据的格式,定义在MMREG.H文件中 nChannels:波形数据的通道数:单声道或立体声 nSamplesPerSec:采样率,对于PCM格式的波形数据,采样率有8.0kHz,11.025kHz,22.05kHz,44.1kHz 等 nAvgBytesPerSec:数据率,对于PCM格式的波形数据,数据率等于采样率乘以每样点字节数nBlockAlign:每个样点字节数 wBitsPerSample:采样精度,对于PCM格式的波形数据,采样精度为8或16 cbSize:附加格式信息的数据块大小 概念2、定义设备头结构 以下WAVEHDR定义了指向波形数据缓冲区的设备头。 WAVEHDR typedef struct{LPSTR lpData;DWORD dwBufferLength;DWORD dwBytesRecorded;DWORD dwUser; DWORD dwFlags;DWORD dwLoops;struct wavehdr_tag*lpNext;DWORD reserved;}WAVEHDR; lpData:波形数据的缓冲区地址 dwBufferLength:波形数据的缓冲区地址的长度 dwBytesRecorded:当设备用于录音时,标志已经录入的数据长度 dwUser:用户数据 dwFlags:波形数据的缓冲区的属性 dwLoops:播放循环的次数,仅用于播放控制中 lpNext和reserved均为保留值 注意:上述结构体以及我们在程序中所使用到的“HWAVEIN””HWAVEOUT”结构体均是系统已经存在的,我们只需要对其进行赋值即可。 二、PCM(44字节)的W A V文件头及其相关的编程方法 1、以下就经常见的一种格式PCM(44字节)的WAV文件头进行分析。 举例说明:kugoo下载的一首wav文件:魏三抹去泪水wav.wav(大小14,703,980字节,时长2:46),文件头如下: ⑴地址00H-03H,值为“RIFF”标志;

详解wave头格式(尽可能详细并附代码)

整理网上和读书时的资料,结合自己的实际经验,给出wav头格式的解释和源代码,既是对自己的总结,同时又服务大家。另外在给出几个实际例子,如果看了这篇文档还不能正确写出wave文件,那就要吊起来打了^_^。 ——flywen 2010-10-13 参考网址一:https://www.sodocs.net/doc/eb16044853.html,/sshcx/archive/2007/05/01/1593923.aspx 参考网址二:https://www.sodocs.net/doc/eb16044853.html,/share/detail/15909594 WAVE 文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。RIFF是英文Resource Interchange File Format的缩写,每个WAVE文件的头四个字节便是"RIFF"。WAVE 文件由文件头和数据体两大部分组成。其中文件头又分为RIFF/WAV文件 标识段和声音数据格式说明段两部分。 常见的声音文件主要有两种,分别对应于单声道(11.025KHz 采样率、8Bit的采样值)和双声道(44.1KHz采样率、16Bit的采样值)。采样率是指:声音信号在"模→数"转换过程中单位时间内采样的次数。 采样值是指每一次采样周期内声音模拟信号的积分值。 [!21ki@][@21ki!] 对于单声道声音文件,采样数据为八位的短整数(short int 00H-FFH);而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int),高八位和低八位分别代表左右两个声道。 WAVE文件数据块包含以脉冲编码调制(PCM)格式表示的样本。WAVE文件是由样本组织而成的。在单声道WAVE文件中,声道0代表左声道,声道1代表右声道。在多声道WAVE文件中,样本是交替出现的。 参考网址一和二中都给出了wav的头定义,但有一个小区别,一中将这个44个字节作为一个大的头,给定在一个结构体中,而二中则是按照四个不同的chunk处理的,所以就给了四个结构体,后面我的代码也是根据二来写的,个人觉得这样比较清晰,不过这纯属个人感觉。 下面就是根据四个结构体写的代码,注意FACT不是必须的,可以不用写入头,不写的话就是44个字节,写的话wave的头是56个字节。 一:源代码(参考二中也有比较详细的读wave头的代码) #if !defined(_WAV_INFO_) #define _WAV_INFO_ // 一些和声音数据相关的宏 #define SAMPLE_RATE 22050 // sample rate,每秒22050个采样点 #define QUANTIZATION 0x10 // 16bit量化, #define BYTES_EACH_SAMPLE 0x2 // QUANTIZATION / 8, 所以每个采样点、 // 是short,占个2个字节 #define CHANNEL_NUN 0x1 // 单声道 #define FORMAT_TAG 0x1 // 线性PCM // 一个wave file包括四个CHUNK,除了FACT之外,其它是必须的,并且第一个RIFF是整个文件的头,// 所以别名为WAV_HEADER,而不是RIFF /*------------------------Wave File Structure ------------------------------------ */ typedef struct RIFF_CHUNK{

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

wave文件(*.wav)格式、PCM数据格式 1. 音频简介 经常见到这样的描述: 44100HZ 16bit stereo 或者22050HZ 8bit mono 等等. 44100HZ 16bit stereo: 每秒钟有44100 次采样, 采样数据用16 位(2字节)记录, 双声道(立体声); 22050HZ 8bit mono: 每秒钟有22050 次采样, 采样数据用8 位(1字节)记录, 单声道; 当然也可以有16bit 的单声道或8bit 的立体声, 等等。 采样率是指:声音信号在“模→数”转换过程中单位时间内采样的次数。采样值是指每一次采样周期内声音模拟信号的积分值。 对于单声道声音文件,采样数据为八位的短整数(short int 00H-FFH); 而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int),高八位(左声道)和低八位(右声道)分别代表两个声道。 人对频率的识别范围是20HZ - 20000HZ, 如果每秒钟能对声音做20000 个采样, 回放时就足可以满足人耳的需求. 所以22050 的采样频率是常用的, 44100已是CD音质, 超过48000的采样对人耳已经没有意义。这和电影的每秒24 帧图片的道理差不多。 每个采样数据记录的是振幅, 采样精度取决于储存空间的大小: 1 字节(也就是8bit) 只能记录256 个数, 也就是只能将振幅划分成256 个等级; 2 字节(也就是16bit) 可以细到65536 个数, 这已是CD 标准了; 4 字节(也就是32bit) 能把振幅细分到4294967296 个等级, 实在是没必要了. 如果是双声道(stereo), 采样就是双份的, 文件也差不多要大一倍. 这样我们就可以根据一个wav 文件的大小、采样频率和采样大小估算出一个wav 文件的播放长度。 譬如"Windows XP 启动.wav" 的文件长度是424,644 字节, 它是"22050HZ / 16bit / 立体声" 格式(这可以从其"属性->摘要" 里看到), 那么它的每秒的传输速率(位速, 也叫比特率、取样率)是22050*16*2 = 705600(bit/s), 换算成字节单位就是705600/8 = 88200(字节/秒), 播放时间:424644(总字节数) / 88200(每秒字节数) ≈ 4.8145578(秒)。 但是这还不够精确, 包装标准的PCM 格式的WAVE 文件(*.wav)中至少带有42 个字节的头信息, 在计算播放时间时应该将其去掉, 所以就有:(424644-42) / (22050*16*2/8) ≈ 4.8140816(秒). 这样就比较精确了. 关于声音文件还有一个概念: "位速", 也有叫做比特率、取样率, 譬如上面文件的位速是705.6kbps 或705600bps, 其中的b 是bit, ps 是每秒的意思;

wav文件格式分析详解

wav文件格式分析详解 一、综述 WAVE文件作为多媒体中使用的声波文件格式之一,它是以RIFF格式为标准的。 RIFF是英文Resource Interchange File Format的缩写,每个WAVE文件的头四个 字节便是“RIFF”。 WAVE文件是由若干个Chunk组成的。按照在文件中的出现位置包括:RIFF WAVE Chunk, Format Chunk, Fact Chunk(可选), Data Chunk。具体见下图: ------------------------------------------------ | RIFF WAVE Chunk | | ID = 'RIFF' | | RiffType = 'WAVE' | ------------------------------------------------ | Format Chunk | | ID = 'fmt ' | ------------------------------------------------ | Fact Chunk(optional) | | ID = 'fact' | ------------------------------------------------ | Data Chunk | | ID = 'data' | ------------------------------------------------ 图1 Wav格式包含Chunk示例 其中除了Fact Chunk外,其他三个Chunk是必须的。每个Chunk有各自的ID,位 于Chunk最开始位置,作为标示,而且均为4个字节。并且紧跟在ID后面的是Chunk大小(去除ID和Size所占的字节数后剩下的其他字节数目),4个字节表示,低字节 表示数值低位,高字节表示数值高位。下面具体介绍各个Chunk内容。 PS: 所有数值表示均为低字节表示低位,高字节表示高位。 二、具体介绍 RIFF WAVE Chunk ==================================

几种常见音频视频音乐文件格式

几种常见音频视频音乐文件格式 1、.wmv WMV是微软推出的一种流媒体格式,它是在“同门”的ASF(Advanced Stream Format)格式升级延伸来得。在同等视频质量下,WMV格式的体积非常小,因此很适合在网上播放和传输。AVI文件将视频和音频封装在一个文件里,并且允许音频同步于视频播放。与DV D视频格式类似,AVI文件支持多视频流和音频流。WMV 不是仅仅基于微软公司的自有技术开发的。从第七版(WMV1)开始,微软公司开始使用它自己非标准MPEG-4 Par t 2。但是,由于WMV第九版已经是SMPTE的一个独立标准(421M,也称为VC-1),有理由相信WMV的发展已经不象MPEG-4那样是一个它自己专有的编解码技术。现在VC-1专利共享的企业有16家(2006年4月),微软公司也是MPEG-4 AVC/H.264专利共享企业中的一家。微软的WMV还是很有影响力的。可是由于微软本身的局限性其WMV 的应用发展并不顺利。第一, WM9是微软的产品它必定要依赖着Windows,Windows 意味着解码部分也要有PC,起码要有PC机的主板。这就大大增加了机顶盒的造价,从而影响了视频广播点播的普及。第二,WMV技术的视频传输延迟非常大,通常要10几秒钟,正是由于这种局限性,目前WMV也仅限于在计算机上浏览WM9视频文件。WMV-HD是由软件业的巨头微软公司所创立的一种视频压缩格式,一般采用.wmv为文件后缀名。其压缩率甚至高于MPEG-2标准,同样是2小时的HDTV节目,如果使用MPEG-2最多只能压缩至30GB,而使用WMV-HD这样的高压缩率编码器,在画质丝毫不降的前提下都可压缩到15GB以下。WMV-HD,基于WMV9标准,是微软开发的视频压缩技术系列中的最新版本,尽管WMV-HD是微软的独有标准,但因其在操作系统中大力支持WMV系列版本,从而在桌面系统得以迅速普及。在性能上,WMV-HD的数据压缩率与H.264一样,两者的应用领域也极其相似,因此在新一代主流视频编码标准霸主地位的争夺之中,双方展开了针锋相对的斗争,而斗争的焦点集中在下一代光盘规格“HD DVD”和数字微波广播电视等领域。一般采用.wmv为后缀的HDTV文件就是采用的WMV-HD压缩的。目前DVD论坛已经初步批准将MPEG-2、H.264和微软的WMA-HD作为下一代DVD即HD-DVD技术的强制执行 标准。 2、.MOV MOV即QuickTime影片格式,它是Apple公司开发的音频、视频文件格式,用于存储常用数字媒体类型,如音频和视频。当选择QuickTime (*.mov)作为“保存类型”时,动画 将保存为.mov 文件. 用格式工厂1.90可以转换 3、.mpeg MPEG1 MPEG1格式即我们通常所说的VCD视频格式。它可针对SIF标准分辨率的图像进行压缩,视频速度每秒可播放30帧,具有画质好、音质接近于CD等优点,不过对解码芯片的运算能力有较高要求。

常见音频文件格式的特点

常见音频文件格式的特点。 要在计算机内播放或是处理音频文件,也就是要对声音文件进行数、模转换,这个过程同样由采样和量化构成,人耳所能听到的声音,最低的频率是从20Hz起一直到最高频率20KHZ,20KHz以上人耳是听不到的,因此音频的最大带宽是20KHZ,故而采样速率需要介于40~50KHZ之间,而且对每个样本需要更多的量化比特数。音频数字化的标准是每个样本16位-96dB的信噪比,采用线性脉冲编码调制PCM,每一量化步长都具有相等的长度。在音频文件的制作中,正是采用这一标准。 CD格式:正统血脉 当今世界上音质最好的音频格式是什么?当然是CD 了。因此要讲音频格式,CD自然是打头阵的先锋。在大多数播放软件的“打开文件类型”中,都可以看到*.cda格式,这就是CD音轨了。标准CD格式也就是44.1K的采样频率,速率88K/秒,16位量化位数,因为CD音轨可以说是近似无损的,因此它的声音基本上是忠于原声的,因此如果你是一个音响发烧友的话,CD是你的首选。它会让你感受到天籁

之音。CD光盘可以在CD唱机中播放,也能用电脑里的各种播放软件来重放。一个CD音频文件是一个*.cda文件,这只是一个索引信息,并不是真正的包含声音信息,所以不论CD音乐的长短,在电脑上看到的“*.cda文件”都是44字节长。注意:不能直接的复制CD格式的*.cda文件到硬盘上播放,需要使用象EAC这样的抓音轨软件把CD格式的文件转换成WAV,这个转换过程如果光盘驱动器质量过关而且EAC的参数设置得当的话,可以说是基本上无损抓音频。推荐大家使用这种方法。 WAV:无损 是微软公司开发的一种声音文件格式,它符合PIFFResource Interchange File Format 文件规范,用于保存WINDOWS平台的音频信息资源,被WINDOWS平台及其应用程序所支持。“*.WAV”格式支持MSADPCM、CCITT A LAW 等多种压缩算法,支持多种音频位数、采样频率和声道,标准格式的WAV文件和CD格式一样,也是44.1K的采样频率,速率88K/秒,16位量化位数,看到了吧,WAV格式的声音文件质量和CD相差无几,也是目前PC机上广为流行的声音文件格式,几乎所有的音频编辑软件都“认识”WAV格式。

请问如何将flac格式的视频转换成wav格式

flac和wav很相似,都是音频编码的一种音频压缩编码。而且flac 和wav都为无损压缩音频格式,标准格式化的WAV文件和CD格式一样,因此如果有些用户想要将下载的flac格式音频转换为wav也是比较容易实现的,只需要一款音频转换器便可轻松实现。以下即是小编常使用的一款迅捷音频转换器,一起来看看它是如何将flac转换wav 音频格式。 1、将此款迅捷音频转换器安装在电脑上,可鼠标双击软件图标将软件快速打开,有三种方式进行文件添加,第一是界面左上方的“添加文件”第二是点击中间的“+”号第三就很方便了,直接将flac文件拖拽进入即可。

2、点击右上方“选择输出格式”右边的倒三角符号。弹出格式选项,来到“音频”选项上,我们很快就可以找到并点击需要转换的wav格式文件。 3、如果想要wav文件转换出来的效果变得更好的,那么就要来到参数的设置项上。我们可以看到音频设置项上,有音频质量、声道、编码等设置。音频声道、质量越大,声音的效果就越好,文件也就越大;

这些功能参数可以按照自己的意愿随意更改设置。 4、在文件转换之前,我们接下来需要做的就是来到主界面下方的输出目录设置,点击输出目录右边的更改路径按钮,然后就在弹出的对话框上选择存放文件的地方。 5、等到所有都设置好了。我们就可以将flac文件进行转换啦,可以点击文件右边的“转换”按钮也可以点击下方的“开始转换”然后进行音频文件格式的转换。

6、相对于音频格式之间转换来说,一般一个文件的转换,其速度非常快的,一首歌曲只需要几秒钟就可以完成转换了。等到转换完成,你就可以到以上你设置好的输出目录上轻松又快速地找到wav音频文件了。 总结:在将flac转wav中,在整个过程中,选择格式和参数设置是最主要的两步。当你熟悉这款软件之后,你就会很快将音频格式文件轻

高品质音乐文件基础知识(wav)

高品质音乐文件基础知识(wav) 序: 如果是播放器,最好是将DTS CD、DTS DVD Audio、DSD编码的SACD音乐等转换成PCM DVD Audio编码来播放,效果较佳。 1.常见编码音乐文件属性: 1.1.MP3文件枚举 编码:MPEG 1 Layer 3 声道[声音数]:立体声 频率[采样频率]:44100 Hz 比特[量化位数]:16 Bits 码率[比特率]:128 Kbps/320 Kbps 1.2.APE/.cue文件枚举 编码:Monkey's Audio 3.99 声道[声音数]:5.1声道 频率[采样频率]:44100 Hz 比特[量化位数]:16 Bits 码率[比特率]:728 Kbps/769 Kbps/789 Kbps/790 Kbps/826 Kbps 1.3.FLAC/.cue文件枚举 编码:FLAC Audio 声道[声音数]:立体声 频率[采样频率]:44100 Hz 比特[量化位数]:16 Bits 码率[比特率]:872 Kbps/920 Kbps/936 Kbps/1.01 Mbps 1.4.WAV文件枚举 编码:DVD DTS Audio 声道[声音数]:5.1声道 频率[采样频率]:44100 Hz 比特[量化位数]:16 Bits 码率[比特率]:1.41 Mbps 1.5.WAV/.cue文件枚举 编码:PCM Audio 声道[声音数]:立体声 频率[采样频率]:44100 Hz 比特[量化位数]:16 Bits 码率[比特率]:1.41 Mbps 比特率-量化位数*采样频率*声音数-16*44100*2-1411200 bps≈1411 kbps≈1.41 Mbps

各种音视频编解码学习详解

各种音视频编解码学习详解 编解码学习笔记(一):基本概念 媒体业务是网络的主要业务之间。尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析、应用开发、释放license收费等等。最近因为项目的关系,需要理清媒体的codec,比较搞的是,在豆丁网上看运营商的规范标准,同一运营商同样的业务在不同文档中不同的要求,而且有些要求就我看来应当是历史的延续,也就是现在已经很少采用了。所以豆丁上看不出所以然,从wiki上查。中文的wiki信息量有限,很短,而wiki的英文内容内多,删减版也减肥得太过。我在网上还看到一个山寨的中文wiki,长得很像,红色的,叫―天下维客‖。wiki的中文还是很不错的,但是阅读后建议再阅读英文。 我对媒体codec做了一些整理和总结,资料来源于wiki,小部分来源于网络博客的收集。网友资料我们将给出来源。如果资料已经转手几趟就没办法,雁过留声,我们只能给出某个轨迹。 基本概念 编解码 编解码器(codec)指的是一个能够对一个信号或者一个数据流进行变换的设备或者程序。这里指的变换既包括将信号或者数据流进行编码(通常是为了传输、存储或者加密)或者提取得到一个编码流的操作,也包括为了观察或者处理从这个编码流中恢复适合观察或操作的形式的操作。编解码器经常用在视频会议和流媒体等应用中。 容器 很多多媒体数据流需要同时包含音频数据和视频数据,这时通常会加入一些用于音频和视频数据同步的元数据,例如字幕。这三种数据流可能会被不同的程序,进程或者硬件处理,但是当它们传输或者存储的时候,这三种数据通常是被封装在一起的。通常这种封装是通过视频文件格式来实现的,例如常见的*.mpg, *.avi, *.mov, *.mp4, *.rm, *.ogg or *.tta. 这些格式中有些只能使用某些编解码器,而更多可以以容器的方式使用各种编解码器。 FourCC全称Four-Character Codes,是由4个字符(4 bytes)组成,是一种独立标示视频数据流格式的四字节,在wav、avi档案之中会有一段FourCC来描述这个AVI档案,是利用何种codec来编码的。因此wav、avi大量存在等于―IDP3‖的FourCC。 视频是现在电脑中多媒体系统中的重要一环。为了适应储存视频的需要,人们设定了不同的视频文件格式来把视频和音频放在一个文件中,以方便同时回放。视频档实际上都是一个容器里面包裹着不同的轨道,使用的容器的格式关系到视频档的可扩展性。 参数介绍 采样率 采样率(也称为采样速度或者采样频率)定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。采样频率的倒数叫作采样周期或采样时间,它是采样之间的时间间隔。注意不要将采样率与比特率(bit rate,亦称―位速率‖)相混淆。 采样定理表明采样频率必须大于被采样信号带宽的两倍,另外一种等同的说法是奈奎斯特频率必须大于被采样信号的带宽。如果信号的带宽是100Hz,那么为了避免混叠现象采样频率必须大于200Hz。换句话说就是采样频率必须至少是信号中最大频率分量频率的两倍,否则就不能从信号采样中恢复原始信号。 对于语音采样: ?8,000 Hz - 电话所用采样率, 对于人的说话已经足够 ?11,025 Hz ?22,050 Hz - 无线电广播所用采样率 ?32,000 Hz - miniDV 数码视频camcorder、DAT (LP mode)所用采样率 ?44,100 Hz - 音频CD, 也常用于MPEG-1 音频(VCD, SVCD, MP3)所用采样率

wav 声音文件介绍

1. 音频简介 经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等. 44100HZ 16bit stereo: 每秒钟有 44100 次采样, 采样数据用 16 位(2字节)记录, 双声道(立体声); 22050HZ 8bit mono: 每秒钟有 22050 次采样, 采样数据用 8 位(1字节)记录, 单声道; 当然也可以有 16bit 的单声道或 8bit 的立体声, 等等。 采样率是指:声音信号在“模→数”转换过程中单位时间内采样的次数。采样值是指每一次采样周期内声音模拟信号的积分值。 对于单声道声音文件,采样数据为八位的短整数(short int 00H-FFH); 而对于双声道立体声声音文件,每次采样数据为一个16位的整数(int),高八位(左声道)和低八位(右声道)分别代表两个声道。 人对频率的识别范围是 20HZ - 20000HZ, 如果每秒钟能对声音做 20000 个采样, 回放时就足可以满足人耳的需求. 所以 22050 的采样频率是常用的, 44100已是CD音质, 超过48000的采样对人耳已经没有意义。这和电影的每秒 24 帧图片的道理差不多。 每个采样数据记录的是振幅, 采样精度取决于储存空间的大小: 1 字节(也就是8bit) 只能记录 256 个数, 也就是只能将振幅划分成 256 个等级; 2 字节(也就是16bit) 可以细到 65536 个数, 这已是 CD 标准了; 4 字节(也就是32bit) 能把振幅细分到 4294967296 个等级, 实在是没必要了. 如果是双声道(stereo), 采样就是双份的, 文件也差不多要大一倍. 这样我们就可以根据一个 wav 文件的大小、采样频率和采样大小估算出一个 wav 文件的播放长度。

wav文件格式分析

一.RIFF概念 在Windows环境下,大部分的多媒体文件都依循着一种结构来存放信息,这种结构称为"资源互换文件格式"(Resources Interchange File Format),简称RIFF。例如声音的WAV文件、视频的AV1文件等等均是由此结构衍生出来的。RIFF可以看做是一种树状结构,其基本构成单位为chunk,犹如树状结构中的节点,每个chunk 由"辨别码"> '数据大小"及"数据"所组成。 图一、块的结构示意图 辨别码由4个ASCII码所构成,数据大小则标示出紧跟其后数据的长度(单位为Byte),而数据大小本身也用掉4个Byte,所以事实上一个chunk的长度为数据大小加8。一般而言,chunk本身并不允许内部再包 含chunk,但有两种例外,分别为以"RIFF"及"L1ST"为辨别码的chunk。而针对此两种chunk,RIFF又从 原先的"数据"中切出4个Byte。此4个Byte称为"格式辨别码",然而RIFF又规定文件中仅能有一个以 "RIFF"为辨别码的chunk。 图二、RIFF/LIST块结构 只要依循此一结构的文件,我们均称之为RIFF档。此种结构提供了一种系统化的分类。如果和MS —DOS 文件系统作比较,"RIFF"chunk就好比是一台硬盘的根目录,其格式辨别码便是此硬盘的逻辑代码(C :或D:),而"L1ST"chunk即为其下的子目录,其他的chunk则为一般的文件。至于在RIFF文件的处理方面,微软提供了相关的函数。视窗下的各种多媒体文件格式就如同在磁盘机下规定仅能放怎样的目录,而在该目录下仅能放何种数据。 二.WAV文件格式 WAVE文件是非常简单的一种RIFF文件,它的格式类型为"WAVE"。RIFF块包含两个子块,这两个子块 的ID分别是"fmt"和"data",其中"fmt"子块由结构PCMWAVEFORMAT 所组成,其子块的大小就是sizeofof (PCMWAVEFORMAT),数据组成就是PCMWAVEFORMAT 结构中的数据。

常见音频文件格式

音频格式详解 以下是常见音频文件格式的特点。 要在计算机内播放或是处理音频文件,也就是要对声音文件进行数、模转换,这个过程同样由采样和量化构成,人耳所能听到的声音,最低的频率是从20Hz 起一直到最高频率20KHZ,20KHz以上人耳是听不到的,因此音频的最大带宽是20KHZ,故而采样速率需要介于40~50KHZ之间,而且对每个样本需要更多的量化比特数。音频数字化的标准是每个样本16位-96dB的信噪比,采用线性脉冲编码调制PCM,每一量化步长都具有相等的长度。在音频文件的制作中,正是采用这一标准。 CD格式:正统血脉 当今世界上音质最好的音频格式是什么?当然是CD了。因此要讲音频格式,CD自然是打头阵的先锋。在大多数播放软件的“打开文件类型”中,都可以看到*.cda格式,这就是CD音轨了。标准CD格式也就是44.1K的采样频率,速率88K/秒,16位量化位数,因为CD音轨可以说是近似无损的,因此它的声音基本上是忠于原声的,因此如果你是一个音响发烧友的话,CD是你的首选。它会让你感受到天籁之音。CD光盘可以在CD唱机中播放,也能用电脑里的各种播放软件来重放。一个CD音频文件是一个*.cda文件,这只是一个索引信息,并不是真正的包含声音信息,所以不论CD音乐的长短,在电脑上看到的“*.cda文件”都是44字节长。注意:不能直接的复制CD格式的*.cda文件到硬盘上播放,需要使用象EAC这样的抓音轨软件把CD格式的文件转换成WAV,这个转换过程如果光盘驱动器质量过关而且EAC的参数设置得当的话,可以说是基本上无损抓音频。推荐大家使用这种方法。 WAV:无损 是微软公司开发的一种声音文件格式,它符合 PIFFResource Interchange File Format 文件规范,用于保存WINDOWS平台的音频信息资源,被WINDOWS 平台及其应用程序所支持。“*.WAV”格式支持MSADPCM、CCITT A LAW等多种压缩算法,支持多种音频位数、采样频率和声道,标准格式的WAV文件和CD格式一样,也是44.1K的采样频率,速率88K/秒,16位量化位数,看到了吧,WAV 格式的声音文件质量和CD相差无几,也是目前PC机上广为流行的声音文件格式,几乎所有的音频编辑软件都“认识”WAV格式。但缺点是体型过于“巨大”。 AIFF与AU 这里顺便提一下由苹果公司开发的AIFF(Audio Interchange File Format)格式和为UNIX系统开发的AU格式,它们都和WAV非常相像,在大多数的音频编辑软件中也都支持它们这几种常见的音乐格式。 MP3:流行

相关主题