如何让软件 捕获声卡的 输出音频,来进行 录音,存在电脑上
用什么方法,怎样做,请写些详细一点!先谢谢了!

解决方案 »

  1.   

    直接播放回放,不知是不是你要的 控件,ACMWaveIn1,ACMWaveOut1,IdUDPClient1,IdUDPServer1, 
    type 
      TGSM610 = packed record 
        wFormatTag: Word;      { format type } 
        nChannels: Word;        { number of channels (i.e. mono, stereo, etc.) } 
        nSamplesPerSec: DWORD;  { sample rate } 
        nAvgBytesPerSec: DWORD; { for buffer estimation } 
        nBlockAlign: Word;      { block size of data } 
        wBitsPerSample: Word;  { number of bits per sample of mono data } 
        cbSize: Word;          { the count in bytes of the size of } 
        wSamplesPerBlock:word; 
      end; var 
        gsm610: TGSM610; 
        format: Pointer; 
        i    : integer; 
    begin 
      with gsm610 do 
      begin 
        wFormatTag:=$31; 
        nChannels:=1; 
        wBitsPerSample:=0; 
        nSamplesPerSec:=8000; 
        nBlockAlign:=65; 
        nAvgBytesPerSec:=1625; 
        cbSize:=2; 
        wSamplesPerBlock:=$140; 
      end; 
      format:=@gsm610; 
      ACMWaveOut1.Open(format); 
      ACMWaveIn1.Open(format); 
      IdUDPClient1.Active := true; 
      IdUDPServer1.Active := true; procedure TSysDetectFrm.ACMWaveIn1Data(data: Pointer; size: Integer); 
    var 
      mdata:array[1..10000] of char; 
      k:integer; 
    begin 
      for k:=1 to size do 
        mdata[k]:=pchar(dword(data)+dword(k-1))^; 
      IdUDPClient1.SendBuffer(mData,Size); 
    end; procedure TSysDetectFrm.IdUDPServer1UDPRead(Sender: TObject; 
      AData: TStream; ABinding: TIdSocketHandle); 
    var 
      mdata:array[1..10000] of char; 
      data:Pchar; 
      Tmp : integer; 
    begin 
        Adata.ReadBuffer(mdata,Adata.Size); 
        data:=pchar(dword(@mdata)); 
        ACMWaveOut1.PlayBack(data,Adata.Size); 
    end; 类似于QQ,MSN,系统硬件检测中的回放效果...楼主修改一下就可以了,定义一个音乐文件格式头,然后将接收到的数据写入文件(Adata.ReadBuffer(mdata,Adata.Size); 
    )保存,就OK了。。