不使用任何控件的录音程序 发表:不详 阅读:449次 关键字:不详 字体:[大 中 小] unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,mmsystem, StdCtrls;type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Button4: TButton; SaveDialog1: TSaveDialog; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject); begin mciSendString('close p1',0,0,0); mciSendStringA('open new type WAVEAudio alias p1',0,0,0); mciSendString('record p1',0,0,0); end;procedure TForm1.Button2Click(Sender: TObject); begin mciSendString('stop p1',0,0,0); end;procedure TForm1.Button3Click(Sender: TObject); begin mciSendString('play p1',0,0,0); end;procedure TForm1.Button4Click(Sender: TObject); var s:string; begin if SaveDialog1.Execute then s:='save p1 '+SaveDialog1.filename; mciSendString(pchar(s),0,0,0); end;end.
直接播放回放,不知是不是你要的控件,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,系统硬件检测中的回放效果...
发表:不详 阅读:449次 关键字:不详 字体:[大 中 小] unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,mmsystem, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button4: TButton;
SaveDialog1: TSaveDialog;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
mciSendString('close p1',0,0,0);
mciSendStringA('open new type WAVEAudio alias p1',0,0,0);
mciSendString('record p1',0,0,0);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
mciSendString('stop p1',0,0,0);
end;procedure TForm1.Button3Click(Sender: TObject);
begin
mciSendString('play p1',0,0,0);
end;procedure TForm1.Button4Click(Sender: TObject);
var s:string;
begin
if SaveDialog1.Execute then
s:='save p1 '+SaveDialog1.filename;
mciSendString(pchar(s),0,0,0);
end;end.
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,系统硬件检测中的回放效果...