我用ACM作语音采集 只写了一个简单的测试用的是控件想问 为什么这个东西 运行时间越长延迟越严重  开始基本上延迟很短  一般10-30分钟后 延迟就严重了直接在得到数据时就回放的.没有进行网络传输请指点一下原知...ACM 就是普通的网上下载的.应用的API wave 系列采集.ACMWaveIn,ACMWaveOut封装后的

解决方案 »

  1.   

    你说的是这个吗?
    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;
      

  2.   

    把采集时的缓冲区设小点,默认好像是8920还是多少,反正挺大的,你设小点会好很多。
    3楼的要ACM去pudn找,我上传过。
      

  3.   

    补充一下ACMIn1的BufferSize默认是8192,你设成1024或512会好多了。
      

  4.   

    用这个SDK包好了:http://www.anychat.cn