Enregistrement audio
Remonter à Tutoriel : Audio-vidéo dans FireMonkey
Ce tutoriel montre comment utiliser FireMonkey pour capturer des données multimédia audio.
Sommaire
Formats de fichiers supportés
Nous vous recommandons d'enregistrer et d'utiliser des fichiers multimédia aux formats suivants selon la plate-forme :
.wav
sur Windows.caf
sur iOS et OS X.3gp
sur Android
Vous pouvez également lire d'autres types de fichiers multimédia, tels que les fichiers MP3.
Conception de la fiche
- Sélectionnez : Fichier > Nouveau > Application multi-périphérique > Application vide.
- Ajoutez un TGridLayout sur la fiche. La disposition ayant la focalisation, définissez les paramètres suivants dans l'inspecteur d'objets :
- Ajoutez deux objets TFlowLayout au TGridLayout (la deuxième disposition flux sera utilisée dans le prochain tutoriel : Lecture de fichiers audio).
- Ajoutez les composants suivants au premier TFlowLayout :
- Remplacez le nom des deux boutons par RecordButton et StopButton.
- Spécifiez que StopButton sera désactivé en définissant la propriété Enable du bouton sur False.
- Ajoutez un TSaveDialog à la fiche.
- Ajoutez un TImage. Définissez la propriété du Bitmap du TImage sur une image suggestive pour le processus d'enregistrement. L'icône généralement utilisée pour un processus d'enregistrement est un cercle rouge.
Implémentation
- 1. Incluez l'unité FMX.Media :
Delphi :
// Delphi version of the implementation
uses
FMX.Media;
C++ :
// C++ version of the implementation
#include <FMX.Media.hpp>
- 2. Déclarez un membre public TAudioCaptureDevice nommé Mic à la classe TForm1 :
Delphi :
type
TForm1 = class(TForm)
// ...............
public
Mic: TAudioCaptureDevice;
C++ :
class TForm1 : public TForm
// ...............
public:
TAudioCaptureDevice *Mic;
- 3. Définissez la propriété Opacity de l'image sur
0
. L'image n'est visible que lorsque le processus d'enregistrement démarre. - 4. Double-cliquez sur le bouton Record pour lui attacher des gestionnaires d'événement OnClick.
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. Double-cliquez sur le bouton Stop pour lui attacher des gestionnaires d'événement OnClick.
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;
}
}
Exécuter l'application
- 1. Pour exécuter le projet, appuyez sur F9.
- 2. Pour commencer l'enregistrement des données audio, appuyez sur le bouton Record. La boîte de dialogue SaveDialog s'affiche.
- 3. Choisissez un chemin et un nom de fichier pour enregistrer les données enregistrées.
- 4. Pour arrêter l'enregistrement, appuyez sur le bouton Stop. Si l'enregistrement ne s'arrête pas en appelant la méthode StopCapture, le fichier sauvegardé ne sera pas correctement décodé lorsqu'il sera lu par un lecteur multimédia.
Précédent
Suivant
Voir aussi
- Création d'un composant FireMonkey (Delphi)
- Création d'un composant FireMonkey (C++)
- Application HD multi-périphérique
- Stratégies des dispositions FireMonkey
- Audio-vidéo dans FireMonkey
Exemples
- Exemple FireMonkey Audio Rec-Play