Aufnehmen von Audio
Nach oben zu Tutorial: Audio-Video in FireMonkey
In diesem Tutorial wird gezeigt, wie mit FireMonkey Audio-Mediendaten aufgenommen werden.
Inhaltsverzeichnis
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 macOS.3gp
für Android
Sie können auch andere Mediendateitypen, wie z. B. MP3-Dateien, wiedergeben.
Formularentwurf
- Wählen Sie Datei > Neu > Geräteübergreifende Anwendung - Delphi > Leere Anwendung.
- Fügen Sie dem Formular eine TGridLayout-Komponente hinzu. Legen Sie im Objektinspektor für die TGridLayout-Komponente die folgenden Einstellungen fest:
- Fügen Sie dem TGridLayout zwei TFlowLayout-Objekte hinzu (das zweite TFlowLayout wird im nächsten Tutorial: Wiedergeben von Audiodateien verwendet).
- Fügen Sie dem ersten TFlowLayout Folgendes hinzu:
- Ändern Sie den Namen der beiden Schaltflächen in RecordButton und StopButton.
- Deaktivieren Sie StopButton, indem Sie die Eigenschaft Enable der Schaltfläche auf False setzen.
- Fügen Sie dem Formular eine TSaveDialog-Komponente hinzu.
- 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.
Implementierung
- 1. Fügen Sie die Unit FMX.Media hinzu:
Delphi:
// Delphi version of the implementation
uses
FMX.Media;
C++:
// C++ version of the implementation
#include <FMX.Media.hpp>
- 2. Deklarieren Sie in der Klasse TForm1 einen public-TAudioCaptureDevice-Member mit Namen Mic:
Delphi:
type
TForm1 = class(TForm)
// ...............
public
Mic: TAudioCaptureDevice;
C++:
class TForm1 : public TForm
// ...............
public:
TAudioCaptureDevice *Mic;
- 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 OnClick-Ereignisbehandlungsroutinen hinzuzufügen:
Delphi:
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;
C++:
void __fastcall TForm1::RecordButtonClick(TObject *Sender)
{
//Get the default microphone
Mic = TCaptureDeviceManager::Current->DefaultAudioCaptureDevice;
if (Mic != NULL)
{
//Set the SaveDialog filter to choose only the supported extension
SaveDialog1->Filter = Mic->FilterString;
if (SaveDialog1->Execute())
{
RecordButton->Enabled = 0;
StopButton->Enabled = 1;
//Gets the name of the file where to save the recorded data
Mic->FileName = SaveDialog1->FileName;
Mic->StartCapture();
Image1->Opacity = 1;
}
}
else
ShowMessage("Audio capturing device not available.");
}
- 5. Doppelklicken Sie auf die Schaltfläche Stop, um OnClick-Ereignisbehandlungsroutinen zuzuordnen:
Delphi:
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;
C++:
void __fastcall TForm1::StopButtonClick(TObject *Sender)
{
if ((Mic != NULL) && (Mic->State == TCaptureDeviceState::Capturing))
{
Mic->StopCapture();
Image1->Opacity = 0;
StopButton->Enabled = 0;
RecordButton->Enabled = 1;
}
}
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. Wenn Sie die Aufnahme nicht durch Aufruf der Methode StopCapture beenden, wird die gespeicherte Datei bei der Wiedergabe in einem Media-Player nicht korrekt decodiert.
Zurück
Weiter
Siehe auch
- Erstellen einer FireMonkey-Komponente (Delphi)
- Erstellen einer FireMonkey-Komponente (C++)
- Geräteübergreifende HD-Anwendung
- Strategien für FireMonkey-Layouts
- Audio-Video in FireMonkey
Beispiele
- FireMonkey Audio Rec-Play (Beispiel)