请问如何用DELPHI读取PCM格式的音频文件。急在线等待......(100)(100分)

  • 主题发起人 主题发起人 lwgygz
  • 开始时间 开始时间
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1453285
 
陈礼泉 (2001-12-23 17:12:00)
Windows有一个PCM WaveFormat的结构(记的不太清楚),填充该结构,然后用
WaveInOpen之类的函数进行操作就可以了。
我的主页有个例子,单不完整,起一个抛砖引玉的效果
Http://person.zy.gz.cn/~bwyclq


YB_unique (2001-12-23 17:26:00)

Try!

TPCMWaveFormat = record
wf: TWaveFormat;
wBitsPerSample: Word;
end;


WaveFormat:=new(PPCMwaveFormat);
with WaveFormat^.wfdo

begin

WFormatTag := WAVE_FORMAT_PCM;
{PCM format - the only option!}
NChannels:=1;
{mono}
NSamplesPerSec:=11000;
{11kHz sampling}
NAvgBytesPerSec:=11000;
{we aim to use 8 bit sound so only 11k per second}
NBlockAlign:=1;
{only one byte in each sample}
waveformat^.wBitsPerSample:=8;
{8 bits in each sample}
end;


i:=waveOutOpen(nil,0,PWaveFormat(WaveFormat),0,0,WAVE_FORMAT_QUERY);
if i<>0 then

application.messagebox('Error', 'Play format not supported', mb_OK);

i:=waveInOpen(nil,0,PWaveFormat(WaveFormat),0,0,WAVE_FORMAT_QUERY);
if i<>0 then

application.messagebox('Error', 'Record format not supported', mb_OK);
 
{装入输出缓存}
i:=waveOutPrepareHeader(HWaveOut^,Header,sizeof(TWavehdr));
if i<>0 then
application.messagebox('Out Prepare error','error',mb_ok);

{添加到输出队列中}
i:=waveOutWrite(HWaveOut^,Header,sizeof(TWaveHdr));
if i<>0 then
application.messagebox('Wave out error','error',mb_ok);
 
已经搞定,多谢各位
 
后退
顶部