一般internet上语音传输要压缩,通常是以ACM实现,格式有GSM等
实现思路:
在发话端以录音设备把语音录下,分成块以ACM压缩,然后传到接受端,
接受端再通过ACM解压缩并在播音设备上回放
请参看sdk中acm系列函数如果是在局域网的话也可以不压缩就传输,但是不能大量使用,
否则占用带宽过大。

解决方案 »

  1.   

    type
      TForm1 = class(TForm)
        ACMDialog1: TACMDialog;
        ACMWaveIn1: TACMWaveIn;
        ACMWaveOut1: TACMWaveOut;
        Button1: TButton;
        Button2: TButton;
        UDPSock1: TUDPSock;
        Edit1: TEdit;
        Wallpaper1: TWallpaper;
        Label1: TLabel;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure ACMWaveIn1Data(data: Pointer; size: Integer);
        procedure UDPSock1Recv(data: PChar; delka: Integer; host: String);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    var format:pointer;
    begin
     UDPsock1.RemoteIP:=edit1.text;
     format:=ACMDialog1.OpenDialog;
     if format=nil then exit;
     UDPSock1.Start;
     ACMWaveOut1.Open(format);
     ACMWaveIn1.Open(format);
     Button1.Enabled:=false;
     Button2.Enabled:=true;
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
     ACMWaveIn1.Close;
     ACMWaveOut1.Close;
     UDPSock1.Stop;
     Button1.Enabled:=true;
     Button2.Enabled:=false;
    end;procedure TForm1.ACMWaveIn1Data(data: Pointer; size: Integer);
    begin
     UDPSock1.Send(data,size);
    end;procedure TForm1.UDPSock1Recv(data: PChar; delka: Integer; host: String);
    begin
     ACMWaveOut1.PlayBack(data,delka);
    end; 
      

  2.   

    有这个TACMDialog的类吗?我怎么没找到啊:(
      

  3.   

    下载ACM Audio控件。试试下面的地址:
    http://www.delphibyte.com/download/softdown.php?softid=152&url=http://61.132.118.165/soft/delphi/Delphi2/ACMAUDIO10.ZIP