Aufnehmen von Audio

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Tutorial: Audio-Video in FireMonkey

In diesem Tutorial wird gezeigt, wie mit FireMonkey Audio-Mediendaten aufgenommen werden.

Unterstützte Dateiformate

Mediendateien sollten je nach Plattform in den folgenden Formaten gespeichert und verwendet werden:

  • .wav für Windows
  • .caf für iOS und Mac OS X
  • .3gp für Android

Sie können auch andere Mediendateitypen, wie z.B. MP3-Dateien, wiedergeben.

Formularentwurf

  1. Wählen Sie Datei > Neu > FireMonkey-Desktop-Anwendung - Object Pascal > HD-FireMonkey-Anwendung.
  2. Fügen Sie dem Formular eine TGridLayout-Komponente hinzu. Legen Sie im Objektinspektor für die TGridLayout-Komponente die folgenden Einstellungen fest:
    • Setzen Sie Align auf MostTop.
    • Setzen Sie ItemWidth auf die Hälfte der Gesamtbreite des Formulars.
  3. Fügen Sie dem TGridLayout zwei TFlowLayout-Objekte hinzu (das zweite TFlowLayout wird im nächsten Tutorial: Wiedergeben von Audiodateien verwendet).
  4. Fügen Sie dem ersten TFlowLayout Folgendes hinzu:
    • Eine TLabel-Komponente. Setzen Sie deren Text auf Capturing.
    • Ein TButton-Steuerelement zum Starten der Datenaufzeichnung.
    • Ein TButton-Steuerelement zum Anhalten der Datenaufzeichnung.
  5. Ändern Sie den Namen der beiden Schaltflächen in RecordButton und StopButton.
  6. Deaktivieren Sie StopButton durch Setzen der Eigenschaft Enable der Schaltfläche auf False.
  7. Fügen Sie dem Formular eine TSaveDialog-Komponente hinzu.
  8. Fügen Sie eine TImage-Komponente hinzu. Setzen Sie die Eigenschaft Bitmap von TImage auf ein Bild, das den Aufzeichnungsvorgang veranschaulicht. Normalerweise wird ein roter Kreis als Symbol für die Aufzeichnung verwendet.
    Das Formular sollte wie folgt aussehen:
    Audio Record Form Design.png

Implementierung

1. Fügen Sie die Unit FMX.Media in den uses-Abschnitt ein:
 // Delphi version of the implementation
 uses
  FMX.Media;
2. Deklarieren Sie in der Klasse TForm1 einen public-TAudioCaptureDevice-Member mit Namen Mic:
 type
   TForm1 = class(TForm)
    // ...............
   public
     Mic: TAudioCaptureDevice;
3. Setzen Sie die Eigenschaft Opacity des Bildes auf 0. Das Bild ist nur sichtbar, wenn die Aufnahme beginnt.
4. Doppelklicken Sie auf die Schaltfläche Record, um ihr OnClick-Ereignisbehandlungsroutinen zuzuordnen:
 procedure TForm1.RecordButtonClick(Sender: TObject);
 begin
   ///Get the default microphone
   Mic := TCaptureDeviceManager.Current.DefaultAudioCaptureDevice;
   if Mic <> nil then
   begin
     //Set the SaveDialog filter to choose only the supported extension
     SaveDialog1.Filter :=  Mic.FilterString;
     if SaveDialog1.Execute then
     begin
       RecordButton.Enabled := false;
       StopButton.Enabled := true;
       //Gets the name of the file where to save the recorded data
       Mic.FileName := SaveDialog1.FileName;
       Mic.StartCapture;
       Image1.Opacity:=1;
     end;
   end
   else
   begin
     ShowMessage('Audio capturing device not available');
   end;
 end;
5. Doppelklicken Sie auf die Schaltfläche Stop, um ihr OnClick-Ereignisbehandlungsroutinen zuzuordnen:
 procedure TForm1.StopButtonClick(Sender: TObject);
 begin
   if (Mic <> nil) and (Mic.State = TCaptureDeviceState.Capturing) then
   begin
     Mic.StopCapture;
     Image1.Opacity := 0;
     StopButton.Enabled := false;
     RecordButton.Enabled := true;
   end;
 end;

Ausführen der Anwendung

1. Drücken Sie F9, um das Projekt auszuführen.
2. Drücken Sie die Schaltfläche Record, um die Aufnahme von Audiodaten zu beginnen. Das Dialogfeld SaveDialog wird geöffnet.
3. Wählen Sie einen Pfad und einen Dateinamen zum Speichern der aufgenommenen Daten aus.
4. Drücken Sie die Schaltfläche Stop, um die Aufnahme anzuhalten. Wird die Aufnahme nicht durch Aufruf der Methode StopCapture beendet, wird die gespeicherte Datei bei der Wiedergabe in einem Media-Player nicht korrekt decodiert.

Zurück

Weiter

Siehe auch