设置wav文件头设置 711 a law 等

来源:互联网 发布:问道手游提示网络错误 编辑:程序博客网 时间:2024/06/06 04:08

记录下G.711 a law的wav文件头应如何设置:

SWaveHeader sHeader;

sprintf(sHeader.rifHeader.szRiffID,"RIFF/0"); // 'R','I','F','F'

sHeader.rifHeader.dwRiffSize = nTotal - 8; //Filelen - 8;

sprintf(sHeader.rifHeader.szRiffFormat,"WAVE/0"); // 'W','A','V','E'

sprintf(sHeader.fmtBlock.szFmtID,"fmt /0"); // 'f','m','t',' '

sHeader.fmtBlock.dwFmtSize = 16; //16 或者18,可变,看后面实际写了多长

sHeader.fmtBlock.wavFormat.wFormatTag = 0x0006; //0x0006; //编码方式 ,0x00001 是PCM, 06是a law

//区分双声道,单声道,wav头中不同,要区分

if (Mono == Type) //双声道

{

trace(1, "开始将录音文件达成wav包/n");

sHeader.fmtBlock.wavFormat.wChannels = 2;//2 //通道,1-单声道;2-双声道

sHeader.fmtBlock.wavFormat.dwSamplesPerSec = 8000; //采样频率

sHeader.fmtBlock.wavFormat.dwAvgBytesPerSec = 16000; //每秒所需字节数

sHeader.fmtBlock.wavFormat.wBlockAlign = 2; //每个采样需要的字节数

sHeader.fmtBlock.wavFormat.wBitsPerSample = 8;//8 //每个采样需要的bit数

}

else if(Stereo == Type)

{

trace(1, "开始将留言文件达成wav包/n");

sHeader.fmtBlock.wavFormat.wChannels = 1;//2 //通道,1-单声道;2-双声道

sHeader.fmtBlock.wavFormat.dwSamplesPerSec = 8000; //采样频率

sHeader.fmtBlock.wavFormat.dwAvgBytesPerSec = 8000; //每秒所需字节数

sHeader.fmtBlock.wavFormat.wBlockAlign = 1; //每个采样需要的字节数

sHeader.fmtBlock.wavFormat.wBitsPerSample = 8;//8 //每个采样需要的bit数

}

当时想查a law对应wFormatTag查了好半天,照着Cool Edit Pro 2.1生成的a law的头也不对(是 07, 按这个放我的声音能听到但音质很差),在rfc里翻了阵也没有查到,反倒是在查别的时候无意中看到如下解释:

ACM 0x0011 Microsoft IMA ADPCM CODEC Microsoft Corporation quartz.dll --> imaadp32.acm

ACM 0x0002 Microsoft ADPCM CODEC Microsoft Corporation quartz.dll --> msadp32.acm

ACM 0x0006 Microsoft CCITT G.711 A-Law and u-Law CODEC Microsoft Corporation quartz.dll -->

msg711.acm

ACM 0x0007 Microsoft CCITT G.711 A-Law and u-Law CODEC Microsoft Corporation quartz.dll -->

msg711.acm

ACM 0x0031 Microsoft GSM 6.10 Audio CODEC Microsoft Corporation quartz.dll --> msgsm32.acm

ACM 0x0022 DSP Group TrueSpeech(TM) Software CODEC DSP GROUP, INC. quartz.dll -->

tssoft32.acm

ACM 0x0042 Microsoft G.723.1 CODEC Microsoft Corporation quartz.dll --> msg723.acm

ACM 0x0160 Windows Media Audio Microsoft Corporation quartz.dll --> msaud32.acm

ACM 0x0161 Windows Media Audio Microsoft Corporation quartz.dll --> msaud32.acm

ACM 0x0130 Sipro Lab Telecom ACELP.net audio codec Sipro Lab Telecom Inc. quartz.dll -->

sl_anet.acm

ACM 0x0402 Indeo® audio software Intel Corporation quartz.dll --> iac25_32.ax

ACM 0x0055 Fraunhofer IIS MPEG Layer-3 Codec (advanced) Fraunhofer Institut Integrierte

Schaltungen IIS quartz.dll --> l3codeca.acm

DMO 0x0160 WMAudio Decoder DMO Microsoft Corporation qasf.dll --> wmadmod.dll

DMO 0x0162 WMAPro over S/PDIF DMO Microsoft Corporation qasf.dll --> wmadmod.dll

DMO 0x000a WMSpeech Decoder DMO Microsoft Corporation qasf.dll --> wmspdmod.dll

DSH 0x0001 ATI MPEG Audio Encoder ATI Technologies, Inc. atimpenc.dll

DSH 0x0050 MPEG Audio Decoder quartz.dll

DSH 0x0055 MPEG Layer-3 Decoder Fraunhofer Institut Integrierte Schaltungen IIS l3codecx.ax

DSH 0x0161 Windows Media Audio Decoder Microsoft Corporation msadds32.ax

DSH 0x0130 ACELP.net Sipro Lab Audio Decoder Sipro Lab Telecom Inc. acelpdec.ax

DSH 0x0050 CyberLink Audio Decoder (ATI) CyberLink Corp. claud.ax

DSH 0x0050 Nero Digital Audio Decoder Nero AG NeAudio.ax

原创粉丝点击