1、我的麦克风插上电脑后,我的托盘里也看到了麦克风的图标,但我对着麦克风说话怎么我的耳机怎么没有声音(耳机没有问题)???
   2、我怎么样才能捕获麦克风的声音并把它存为.wav文件或其他问题,以便我以后再播放这些文件???   具体怎么做啊,有没有哪位大侠接触过这个方面,能否提供一些源码???

解决方案 »

  1.   

    我有组件和例程,怎么给你?  也要有个妹儿吧 hehe^^
      

  2.   

    有一套mac的控件.
    你的问题要使用DirectSound解决
      

  3.   

    我的EMAIL:  [email protected]
      

  4.   

    用一个MediaPlayer1控件:
    unit Unit1;
    interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, MPlayer;
    type
      TWavHeader=record//定义一个Wav文件头格式
      rId:longint;
      rLen:longint;
      wId:longint;
      fId:longint;
      fLen:longint;
      wFormatTag:word;
      nChannels:word;
      nSamplesPerSec:longint;
      nAvgBytesPerSec:longint;
      nBlockAlign:word;
      wBitsPerSample:word;
      dId:longint;
      wSampleLength:longint;
    end;
    TForm1 = class(TForm)
        MediaPlayer1: TMediaPlayer;
        BtStart: TButton;
        BtStop: TButton;
        procedure CreateWav(channels:word;resolution:word;rate:longint;fn:string);
        procedure BtStartClick(Sender: TObject);
        procedure BtStopClick(Sender: TObject);  //自定义写一个Wav文件头过程
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    var
      Form1: TForm1;
    implementation
    {$R *.dfm}
    procedure TForm1.CreateWav(channels:word;              {1(单声)或者2(立体声)}
                               resolution:word;            {8或者16,代表8位或16位声音 }
                               rate:longint;               {声音频率,如11025,22050,44100}
                               fn:string                   {对应的文件名称}                       );
    var wf:file of TWavHeader;
        wh:TWavHeader;
    begin
      wh.rId :=$46464952;
      wh.rLen :=36;
      wh.wId :=$45564157;
      wh.fId :=$20746d66;
      wh.fLen :=16;
      wh.wFormatTag :=1;
      wh.nChannels :=channels;
      wh.nSamplesPerSec :=rate;
      wh.nAvgBytesPerSec:=channels*rate*(resolution div 8);
      wh.nBlockAlign :=channels*(resolution div 8);
      wh.wBitsPerSample :=resolution;
      wh.dId :=$61746164;
      wh.wSampleLength :=0;
      assignfile(wf,fn);                   {打开头文件}
      rewrite(wf);                         {移动指针到文件头}
      write(wf,wh);                        {写进文件头}
      closefile(wf);                       {关闭文件}
    end;
    procedure TForm1.BtStartClick(Sender: TObject);
    begin
      try
        //在程序当前目录下创建一个Wav文件Temp.wav
        CreateWav(1,8,11025,(ExtractFilePath(Application.ExeName)+'Temp.wav'));
        MediaPlayer1.DeviceType :=dtAutoSelect;
        MediaPlayer1.FileName :=(ExtractFilePath(Application.ExeName)+'Temp.wav');
        MediaPlayer1.Open ;
        MediaPlayer1.StartRecording ;
        BtStart.Enabled :=false;
        BtStop.Enabled :=true;
      except
        BtStart.Enabled :=True;
        BtStart.Enabled :=false;
        Application.MessageBox('媒体设备初始化失败!','错误',MB_ICONERROR+MB_OK);
      end;
    end;
    procedure TForm1.BtStopClick(Sender: TObject);
    begin
      try
        MediaPlayer1.Stop ;
        MediaPlayer1.Save ;
        MediaPlayer1.Close ;
        Application.MessageBox('声音录制完毕!','信息',MB_ICONINFORMATION+MB_OK);
        BtStart.Enabled :=True;
        BtStop.Enabled :=false;
      except
        Application.MessageBox('保存声音文件出错!','错误',MB_ICONERROR+MB_OK);
        BtStart.Enabled :=True;
        BtStop.Enabled :=false;
      end;
    end;
    end.