Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.11.2012, 06:31
Comoc Comoc вне форума
Прохожий
 
Регистрация: 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.
Ответить с цитированием
  #2  
Старый 23.11.2012, 07:12
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,004
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Код:
procedure TForm1.RecordButtonClick(Sender: TObject);
var  
  Ext : String; 
  FileName : String;
begin
  // Вот здесь нужно что бы запись шла в файл автоматически с присвоением текущей даты и времени  
  FileName := ExtractFilePath(ParamStr(0))+DateTimeToStr(Now()) + '.ogg';  // Здесь формат поправить!!! 
  if Ext = '.ogg' then  
    begin    
      Output := VorbisOut1; 
    end;  
  Output.FileName := FileName;  
  RecordButton.Enabled := False;  
  SelectFileButton.Enabled := False;  
  SpinEdit2.Enabled := False;  
  Output.Run;  
  label6.Caption := Format('Caienu a "%s"', [ExtractFileName(FileName)]);
end;
Ответить с цитированием
  #3  
Старый 23.11.2012, 09:21
Comoc Comoc вне форума
Прохожий
 
Регистрация: 18.05.2011
Сообщения: 3
Репутация: 10
По умолчанию

Спасибо за быстрый ответ но по какой то причине выдает ошибку.

Не могу понять в чем причина.
Ответить с цитированием
  #4  
Старый 23.11.2012, 09:30
Comoc Comoc вне форума
Прохожий
 
Регистрация: 18.05.2011
Сообщения: 3
Репутация: 10
По умолчанию

Все разобрался. Спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:03.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter