Modifications

Aller à : navigation, rechercher

Lecture de fichiers audio

8 031 octets ajoutés, 19 avril 2016 à 10:26
Updated with WM. LOC-20554
{{Parent|Tutoriel : Audio-vidéo dans FireMonkey}}
Ce tutoriel montre comment inclure et exécuter des données multimédia audio dans une application {{FM}}.

==Conception de la fiche==

#Utilisez la fiche créée lors du [[Enregistrement audio|tutoriel précédent]].
#Ajoutez à la disposition flux vide :
#:
#:* Un [[lib_fr:FMX.StdCtrls.TLabel|TLabel]]. Définissez son texte sur '''Playing'''.
#:* Un [[lib_fr:FMX.StdCtrls.TButton|TButton]] pour commencer la lecture du fichier audio enregistré en suivant les étapes du [[Enregistrement audio|tutoriel précédent]].
#:* Un [[lib_fr:FMX.StdCtrls.TButton|TButton]] pour arrêter ou suspendre la lecture du fichier audio.
#Remplacez le nom des deux boutons par '''PlayButton''' et '''StopPlayButton'''.
#Spécifiez que '''StopPlayButton''' sera désactivé en définissant la propriété '''Enable''' du bouton sur '''False'''.
#Ajoutez un [[lib_fr:FMX.Media.TMediaPlayer|TMediaPlayer]] à la fiche.
#Ajoutez deux autres [[lib_fr:FMX.Objects.TImage|TImages]] à la fiche. Définissez la propriété [[lib_fr:FMX.Objects.TImage.Bitmap|TImage.Bitmap]] de chaque [[lib_fr:FMX.Objects.TImage|TImage]] sur des images suggestives pour les actions de lecture et de pause. L'icône habituelle pour l'action lecture est une flèche et l'icône utilisée pour la pause représente deux barres verticales parallèles.
#Définissez toutes les images sur des positions et des tailles identiques. Les trois images devraient être entièrement superposées.
#Définissez la propriété [[lib_fr:FMX.Controls.TControl.Opacity|Opacity]] de l'image sur <code>0</code>. L'image visible sera l'image qui affiche le processus en cours d'exécution.
#Ajoutez un [[lib_fr:FMX.Types.TTimer|TTimer]] à la fiche. Définissez-le comme activé.
#:La fiche doit ressembler à ceci :
#:[[File:Audio Play Form Design.png]]

==Implémentation==

Pour lire un fichier audio en utilisant un [[lib_fr:FMX.Media.TMediaPlayer|TMediaPlayer]], définissez la propriété [[lib_fr:FMX.Media.TMediaPlayer.FileName|FileName]].

:1. Double-cliquez sur le bouton '''Play''' pour lui attacher des gestionnaires d'événement [[lib_fr:FMX.Controls.TControl.OnClick|OnClick]].

<l s="delphi" />'''{{Delphi}} :'''
<source lang="delphi">
procedure TForm1.PlayButtonClick(Sender: TObject);
begin
// This application plays only recorded data, so if there is no data recorded there is nothing to play.
if (Mic <> nil) and (Mic.State = TCaptureDeviceState.Stopped) then
begin
//Specifies the file to be played.
MediaPlayer1.FileName := Mic.FileName;
//Checks if the data can be decoded.
if MediaPlayer1.Media <> nil then
begin
if (MediaPlayer1.State = TMediaState.Stopped) then
begin
Timer1.Enabled := true;
StopPlayButton.Enabled := true;
MediaPlayer1.Play;
//Updates the opacity of each image.
// Image2 shows the play sign.
Image1.Opacity := 0;
Image2.Opacity := 1;
Image3.Opacity := 0;
end;
end;
end
else
begin
ShowMessage('The audio device is still capturing');
end;
end;
</source><l e="delphi" />

<l s="cpp" />'''C++ :'''
<source lang="cpp">
void __fastcall TForm1::PlayButtonClick(TObject *Sender)
{
// This application plays only recorded data, so if there is no data recorded there is nothing to play.
if ((Mic != NULL) && (Mic->State == TCaptureDeviceState::Stopped))
{
//Specifies the file to be played.
MediaPlayer1->FileName = Mic->FileName;
//Checks if the data can be decoded.
if (MediaPlayer1->Media != NULL)
{
Timer1->Enabled = 1;
StopPlayButton->Enabled = 1;
MediaPlayer1->Play();
//Updates the opacity of each image.
// Image2 shows the play sign.
Image1->Opacity = 0;
Image2->Opacity = 1;
Image3->Opacity = 0;
}
}
else
ShowMessage("The audio device is still capturing.");
}
</source><l e="cpp" />

:2. Double-cliquez sur le bouton '''Stop/Pause''' pour lui attacher des gestionnaires d'événement [[lib_fr:FMX.Controls.TControl.OnClick|OnClick]].

<l s="delphi" />'''{{Delphi}} :'''
<source lang="delphi">
procedure TForm1.StopPlayButtonClick(Sender: TObject);
begin
if MediaPlayer1.Media <> nil then
begin
if MediaPlayer1.State = TMediaState.Playing then
begin
MediaPlayer1.Stop;
Image1.Opacity := 0;
Image2.Opacity := 0;
Image3.Opacity := 1;
Timer1.Enabled := false;
end
else
begin
Image1.Opacity := 0;
Image2.Opacity := 1;
Image3.Opacity := 0;
MediaPlayer1.Play;
Timer1.Enabled := true;
end;
end;
end;
</source><l e="delphi" />

<l s="cpp" />'''C++ :'''
<source lang="cpp">
void __fastcall TForm1::StopPlayButtonClick(TObject *Sender)
{
if (MediaPlayer1->Media != NULL)
{
if (MediaPlayer1->State == TMediaState::Playing)
{
MediaPlayer1->Stop();
Image1->Opacity = 0;
Image2->Opacity = 0;
Image3->Opacity = 1;
Timer1->Enabled = 0;
}
else
{
Image1->Opacity = 0;
Image2->Opacity = 1;
Image3->Opacity = 0;
Timer1->Enabled = 1;
}
}
}
</source><l e="cpp" />

:3. Double-cliquez sur le timer pour lui attacher les gestionnaires d'événement [[lib_fr:FMX.Types.TTimer.OnTimer|OnTimer]]. Le timer est utilisé pour manipuler les opacités des images lors du processus de lecture.

<l s="delphi" />'''{{Delphi}} :'''
<source lang="delphi">
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if (MediaPlayer1.Media <> nil) and
(MediaPlayer1.CurrentTime = MediaPlayer1.Duration) then
begin
Image1.Opacity := 0;
Image2.Opacity := 0;
Image3.Opacity := 0;
StopPlayButton.Enabled:=false;
MediaPlayer1.Stop;
MediaPlayer1.CurrentTime:=0;
end;
end;
</source><l e="delphi" />

<l s="cpp" />'''C++ :'''
<source lang="cpp">
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
if ((MediaPlayer1->Media != NULL) &&
(MediaPlayer1->CurrentTime == MediaPlayer1->Duration))
{
Image1->Opacity = 0;
Image2->Opacity = 0;
Image3->Opacity = 0;
StopPlayButton->Enabled = 0;
MediaPlayer1->Stop();
MediaPlayer1->CurrentTime = 0;
}
}
</source><l e="cpp" />

==Exécuter l'application==

:1. Exécutez le projet en appuyant sur '''F9'''.
:2. Appuyez sur le bouton '''Record''' pour commencer l'enregistrement des données audio. La boîte de dialogue '''SaveDialog''' s'affiche.
:3. Choisissez un chemin et un nom de fichier pour enregistrer les données enregistrées.
: La fiche doit ressembler à ceci :
:[[File:Recording process.png]]
:4. Appuyez sur le bouton '''Stop''' pour arrêter l'enregistrement. Si l'enregistrement n'est pas finalisé en appelant la méthode [[lib_fr:FMX.Media.TCaptureDevice.StopCapture|StopCapture]], le fichier sauvegardé ne sera pas correctement décodé lorsqu'il sera lu par un lecteur multimédia.
:5. Appuyez sur le bouton '''Play'''. La lecture du fichier multimédia commence.
: La fiche doit ressembler à ceci lors du processus de lecture :
:[[File:Playing process.png]]
:6. Appuyez sur le bouton '''Stop/Pause'''. La lecture du fichier multimédia est suspendue.
: La fiche doit ressembler à ceci lors de la pause du fichier multimédia :
:[[File:Stop process.png]]

==Précédent==

* [[Enregistrement audio|Enregistrement audio]]

==Suivant==

* [[Construction d'un lecteur multimédia de base|Construction d'un lecteur multimédia de base]]

==Voir aussi==

<l s="delphi" />

* [[Création d'un composant FireMonkey (Delphi)|Création d'un composant FireMonkey ({{Delphi}})]]

<l e="delphi" />
<l s="cpp" />

* [[Création d'un composant FireMonkey (C++)|Création d'un composant FireMonkey (C++)]]

<l e="cpp" />

* [[Application HD multi-périphérique|Application HD multi-périphérique]]
* [[Stratégies des dispositions FireMonkey|Stratégies des dispositions FireMonkey]]

===Exemples===

* Exemple [[samp_en:FMX.PlayAudioFile Sample|PlayAudioFile]]

[[Category:Delphi]]
[[Category:FMX]]
[[Category:AMMigrate]]
14 347
modifications

Menu de navigation