一般internet上语音传输要压缩,通常是以ACM实现,格式有GSM等
实现思路:
在发话端以录音设备把语音录下,分成块以ACM压缩,然后传到接受端,
接受端再通过ACM解压缩并在播音设备上回放
请参看sdk中acm系列函数如果是在局域网的话也可以不压缩就传输,但是不能大量使用,
否则占用带宽过大。
实现思路:
在发话端以录音设备把语音录下,分成块以ACM压缩,然后传到接受端,
接受端再通过ACM解压缩并在播音设备上回放
请参看sdk中acm系列函数如果是在局域网的话也可以不压缩就传输,但是不能大量使用,
否则占用带宽过大。
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;
http://www.delphibyte.com/download/softdown.php?softid=152&url=http://61.132.118.165/soft/delphi/Delphi2/ACMAUDIO10.ZIP