23.11.2012, 06:31
|
Прохожий
|
|
Регистрация: 18.05.2011
Сообщения: 3
Репутация: 10
|
|
Запись звука с микрофона в файл
Здравствуйте. Пишу программу для записи звука с микрофона. Нужно что бы запись происходила в автоматически созданный файл с именем в виде даты без открытия SaveDialog1 туда где лежит сам exe файл. Используется библиотека NewAC. Спасибо.
Код:
unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ACS_Classes, ACS_Vorbis, StdCtrls, ComCtrls,
ACS_DXAudio, Spin, ExtCtrls, ACS_Wave, ACS_FLAC, NewACIndicators, NewAC_DSP,
ACS_WinMedia;
type
TForm1 = class(TForm)
SelectFileButton: TButton;
RecordButton: TButton;
SaveDialog1: TSaveDialog;
StopButton: TButton;
Timer1: TTimer;
SpinEdit2: TSpinEdit;
Label3: TLabel;
Label4: TLabel;
PauseButton: TButton;
VorbisOut1: TVorbisOut;
WaveOut1: TWaveOut;
DXAudioIn1: TDXAudioIn;
GainProcessor1: TGainProcessor;
FastGainIndicator1: TFastGainIndicator;
Label2: TLabel;
Label5: TLabel;
Label6: TLabel;
procedure RecordButtonClick(Sender: TObject);
procedure SaveDialog1TypeChange(Sender: TObject);
procedure OutputDone(Sender: TComponent);
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure SpinEdit2Change(Sender: TObject);
procedure SelectFileButtonClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure GainIndicator1GainData(Sender: TComponent);
procedure CheckBox2Click(Sender: TObject);
private
{ Private declarations }
Output : TAuFileOut;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.RecordButtonClick(Sender: TObject);
var
Ext : String;
begin
// Вот здесь нужно что бы запись шла в файл автоматически с присвоением текущей даты и времени
if SaveDialog1.FileName = '' then SelectFileButtonClick(Sender);
Ext := ExtractFileExt(SaveDialog1.FileName);
Ext := AnsiLowerCase(Ext);
if Ext = '' then
raise EAuException.Create('Iaaicii?ii ii?aaaeeou oi?iao aoiaiiai oaeea');
if Ext = '.ogg' then
begin
Output := VorbisOut1;
end;
Output.FileName := SaveDialog1.FileName;
RecordButton.Enabled := False;
SelectFileButton.Enabled := False;
SpinEdit2.Enabled := False;
Output.Run;
label6.Caption := Format('Caienu a "%s"', [ExtractFileName(SaveDialog1.FileName)]);
end;
procedure TForm1.SaveDialog1TypeChange(Sender: TObject);
begin
SaveDialog1.DefaultExt := '.ogg'
end;
procedure TForm1.OutputDone(Sender: TComponent);
begin
SelectFileButton.Enabled := True;
RecordButton.Enabled := True;
SpinEdit2.Enabled := True;
if Output <> nil then
begin
Output.Stop(False);
end;
end;
procedure TForm1.StopButtonClick(Sender: TObject);
begin
if Output <> nil then
Output.Stop;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if Output <> nil then
begin
Label2.Caption := Format('%d naeoia, i?ioei', [Output.TimeElapsed]);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
SpinEdit2.MaxValue := DXAudioIn1.DeviceCount - 1;
SpinEdit2.MinValue := 0;
SpinEdit2.Value := 0;
Label4.Caption := DXAudioIn1.DeviceName[SpinEdit2.Value];
Label5.Caption := FormatDateTime('Nae?an: '+'dd.mm.yyyy'+' hh.mm.ss AM/PM', Now());
end;
procedure TForm1.SpinEdit2Change(Sender: TObject);
begin
Label4.Caption := DXAudioIn1.DeviceName[SpinEdit2.Value];
DXAudioIn1.DeviceNumber := SpinEdit2.Value;
end;
procedure TForm1.SelectFileButtonClick(Sender: TObject);
begin
SaveDialog1.InitialDir := ExtractFilePath(paramstr(0));
SaveDialog1.FileName := FormatDateTime('dd.mm.yyyy '+'hh.mm.ss', Now());
SaveDialog1.Execute;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if Output <> nil then
begin
Output.Stop(False);
end;
end;
end.
|