📄 unt_main.pas
字号:
unit Unt_main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, MPlayer, bsSkinCtrls, BusinessSkinForm, bsSkinData,
bsMessages;
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;
bsStoredSkin1: TbsStoredSkin;
bsSkinData1: TbsSkinData;
Btstart: TbsSkinButton;
Btstop: TbsSkinButton;
ssd: TbsSkinRadioGroup;
syz: TbsSkinRadioGroup;
spl: TbsSkinRadioGroup;
bsBusinessSkinForm1: TbsBusinessSkinForm;
//自定义写一个Wav文件头过程
procedure Createwav(channels : word; resolution : word;
rate : longint; fn : string);
procedure BtstartClick(Sender: TObject);
procedure BtstopClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses Unt_pheart;
{$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);
var
sd,yz,pl:integer;
begin
pl:=11025;
if ssd.ItemIndex=0 then sd:=1 else sd:=2;
if syz.ItemIndex=0 then yz:=8 else yz:=16;
if spl.ItemIndex=0 then pl:=11025
else if spl.ItemIndex=1 then pl:=22050
else if spl.ItemIndex=2 then pl:=44100;
try
//在程序当前目录下创建一个Wav文件Temp.wav
CreateWav(sd, yz, pl, (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;
BtStop.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;
procedure TForm1.FormCreate(Sender: TObject);
begin
WriteMciConfig;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -