Audio-vidéo dans FireMonkey

De RAD Studio
Aller à : navigation, rechercher

Remonter à Guide des applications FireMonkey

FireMonkey prend en charge la capture et la lecture des fichiers multimédia (audio-vidéo).

Cette fonctionnalité est disponible pour les plates-formes Windows et macOS, comme suit :

  • L'implémentation Windows utilise DirectShow, et la fonctionnalité audio-vidéo fonctionne sur chaque session Windows.
  • L'implémentation macOS utilise AVFoundation depuis que Apple considère que QuickTime est devenu obsolète,

Formats de fichiers pris en charge

Nous vous recommandons d'enregistrer et d'utiliser des fichiers multimédia dans les formats suivants :

  • .wav sur Windows
  • .caf sur iOS et Mac
  • .3GP sur Android

Vous pouvez également lire d'autres types de fichiers multimédia, tels que les fichiers MP3. Les fichiers vidéo Android sont généralement au format H.263.

Capture audio/vidéo

La classe de base pour les périphériques de capture est TCaptureDevice. Cette classe encapsule les propriétés et les méthodes de base pour les périphériques de capture. TAudioCaptureDevice et TVideoCaptureDevice étendent l'implémentation TCaptureDevice pour ajouter un comportement spécifique respectivement pour les périphériques de capture audio (tels que les microphones) et pour les périphériques de capture vidéo (tels que les caméras web).

TCaptureDeviceManager a été introduit pour accéder aux périphériques de capture et les gérer. TCaptureDeviceManager dispose de méthodes et de propriétés spécifiques pour :

Le périphérique actuellement utilisé est spécifié par la propriété Current du gestionnaire de périphériques. Current est créé lorsqu'une application demande l'accès à TCaptureDeviceManager et est conservé jusqu'à la fermeture de l'application.

Exemple de code

// Delphi declaration
var
  VideoCamera : TVideoCaptureDevice;
begin
  // Get access to the default video capture device
  VideoCamera := TCaptureDeviceManager.Current.DefaultVideoCaptureDevice;
  if VideoCamera <> nil then
  begin
     //do something
  end;
end;
// C++ declaration
TCaptureDeviceManager* CaptureManager = TCaptureDeviceManager::Current;
// Get access to the default video capture device
TVideoCaptureDevice* VideoCamera = CaptureManager->DefaultVideoCaptureDevice;

if(VideoCamera){
  //do something
}

Pour démarrer ou arrêter le processus de capture, vous devez obtenir l'accès au périphérique en utilisant le TCaptureDeviceManager. Ne détruisez jamais les périphériques de capture explicitement ; seul le gestionnaire de capture le fait.

TCaptureDeviceManager permet l'ajout de périphériques de capture personnalisés développés par des fournisseurs tiers. Ce nouveau périphérique peut être restauré par le biais de la méthode RegisterCaptureDeviceClass. Après le recensement du nouveau périphérique, il devient accessible comme tout périphérique standard dans TCaptureDeviceManager.

Lecture multimédia

La classe TMedia a été introduite pour prendre en charge la lecture des sources multimédia. TMedia expose les propriétés du fichier multimédia spécifiant le nom de fichier, la taille, la dimension, l'état ou la durée.

Pour un accès facile, le composant non visuel TMediaPlayer a été introduit. Appelez les méthodes Play et Stop pour démarrer la lecture d'un fichier multimédia, ou pour arrêter ou suspendre un fichier multimédia en cours d'exécution. La position en cours est spécifiée par la propriété CurrentTime. TMediaPlayer expose également les propriétés du fichier multimédia telles que Duration, VideoSize, Volume ou State.

  • Pour lire un fichier audio avec TMediaPlayer, spécifiez simplement le nom du fichier à lire en définissant la propriété FileName et en appelant la méthode Play. Le nom du fichier doit inclure le chemin du fichier, afin qu'il puisse être localisé sur la mémoire, et l'extension.
  • Pour afficher une vidéo, ajoutez un contrôle TMediaPlayerControl et liez-le à TMediaPlayer en définissant la propriété MediaPlayer du TMediaPlayerControl. TMediaPlayerControl est un contrôle vide, mais il est utilisé pour placer la vidéo sur une fiche. (Si le fichier multimédia est un fichier vidéo, l'exécution des étapes de lecture d'un fichier audio permettra uniquement de lire la partie audio de la vidéo.)

Vidéo sur une plate-forme Android

  • Sur la plate-forme Android, les fichiers .3GP sont généralement des fichiers audio uniquement, comme illustré dans AudioRecPlay, l'extrait de code mobile.
    Cependant, le format .3GP peut également prendre en charge la lecture de vidéos. Si vous activez l'utilisation des codecs vidéo dans FMX.Media.Android.pas, vous pouvez lire les vidéos comme les autres fichiers (par exemple, les mp4). Cependant, si vous effectuez ce changement, vous ne pourrez pas enregistrer un fichier audio puis le lire de la même manière que vous le feriez avec AudioRecSample.

Exemple de code

//Delphi declaration
  MediaPlayer1.FileName := 'myVideo.avi';

  if MediaPlayer1.Media <> nil then
  begin
      MediaPlayer1.Play;
  end;
// C++ declaration
MediaPlayer1->FileName="myVideo.avi";
if(MediaPlayer1->Media!=null)
{
   MediaPlayer1->Play();
}

La fonctionnalité de lecture audio/vidéo FireMonkey offre le support des formats de fichier multimédia de la plate-forme native. Avec TMediaCodecManager, il est possible de recenser des codecs multimédia personnalisés pour étendre le support de la fonctionnalité audio/vidéo.

Voir aussi

Exemples