我用ACM作语音采集 只写了一个简单的测试用的是控件想问 为什么这个东西 运行时间越长延迟越严重 开始基本上延迟很短 一般10-30分钟后 延迟就严重了直接在得到数据时就回放的.没有进行网络传输请指点一下原知...ACM 就是普通的网上下载的.应用的API wave 系列采集.ACMWaveIn,ACMWaveOut封装后的
解决方案 »
- 运动员做动作时怎么用摄像机或是摄像头进行录像事后并分析动作分解要领?
- 关于DBGrid的问题
- 如何得到我的程序在忙时所花的时间?
- 如何定义一个消息,使在Form上按下键盘和光标在Edit上时,按下键盘,这个消息都执行。
- Adquery和dbgrid使用时,如何定位记录
- help!Help!!!!!!!!!!!!!!!!
- 菜问题,大家帮忙
- CSDN大本营离线浏览器似乎是DELPHI编的谁有这个东西的源代码?
- 向大家请教一个调用窗体Dll的问题
- ***一个简单的问题:怎么定义几个单元中都用的变量?***
- delphi如何将从access数据库查询出来的数据插入到excel表。。。。
- delphi2010 网络嗅探程序问题-我的目标就是把网络上那些视频还有FLASH真实地址嗅出来下载。
procedure TACMWaveIn.WaveInCallback(var msg: TMessage); //this is called when is buffer full
var
Header: PWaveHdr;
i, bytesrecorded: integer;
data: PChar;
function getErrorMsg(iErr: Integer): string;
var
c:array[0..MAXCHAR] of char;
begin
waveInGetErrorText(iErr, c, SizeOf(c));
Result := StrPas(c);
end;
begin {block has been recorded}
Header := PWaveHdr(msg.lparam);
if closed = false then
begin
i := waveInUnPrepareHeader(HWaveIn1^, Header, sizeof(TWavehdr));
if i <> 0 then raise Exception.Create('In Un Prepare error');
bytesrecorded := header.dwbytesrecorded;
getmem(data, bytesrecorded); //allocate memory
move(header.lpdata^, data^, bytesrecorded); //copy data
if assigned(FOnData) then
begin
FOnData(data, bytesrecorded);
end; Freemem(data); //free memory
{reuse a old memory block} header.dwbufferlength := sizebuf;
header.dwbytesrecorded := 0;
header.dwUser := 0;
header.dwflags := 0;
header.dwloops := 0; {prepare the old block}
i := waveInPrepareHeader(HWaveIn1^, Header, sizeof(TWavehdr)); if i <> 0 then raise Exception.Create('In Prepare error'); {add it to the buffer}
i := waveInAddBuffer(HWaveIn1^, Header, sizeof(TWaveHdr));
try
if i <> 0 then raise Exception.Create('Add buffer error ' + getErrorMsg(i));
except
end;
end
else
begin //free buffers if closed
dispose(header.lpdata);
dispose(header);
end;
end;
3楼的要ACM去pudn找,我上传过。