Audio-Video in FireMonkey

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu FireMonkey-Anwendungshandbuch

FireMonkey unterstützt die Aufnahme und Wiedergabe von Mediadateien (Audio/Video).

Dieses Feature ist für Windows- und OS X-Plattformen wie folgt verfügbar:

  • Die Windows-Implementierung verwendet DirectShow, und das Audio/Video-Feature arbeitet mit jeder Windows-Version.
  • Die OS X-Implementierung verwendet QuickTime und arbeitet mit OS X-Versionen ab 10.5.

Unterstützte Dateiformate

Mediendateien sollten in den folgenden Formaten gespeichert und verwendet werden:

  • .wav für Windows
  • .caf für iOS und Mac
  • .3GP für Android

Sie können auch andere Mediendateitypen, wie z.B. MP3-Dateien, wiedergeben. Beispielsweise haben Android-Videodateien normalerweise das Format H.263.

Aufnahme von Audio und Video

Die Basisklasse für Aufnahmegeräte ist TCaptureDevice. Diese Klasse kapselt die grundlegenden Methoden und Eigenschaften für Aufnahmegeräte. TAudioCaptureDevice und TVideoCaptureDevice erweitern die TCaptureDevice-Implementierung um spezifisches Verhalten für Audio-Aufnahmegeräte (wie Mikrofone) bzw. Video-Aufnahmegeräte (wie Webkamera).

TCaptureDeviceManager wurde für den Zugriff und die Verwaltung von Aufnahmegeräten eingeführt. TCaptureDeviceManager stellt bestimmte Methoden und Eigenschaften für Folgendes bereit:

Das aktuell verwendete Gerät wird in der Eigenschaft Current des Gerätemanagers angegeben. Current wird erstellt, wenn eine Anwendung den Zugriff auf TCaptureDeviceManager anfordert und bleibt bis zum Schließen der Anwendung erhalten.

Codebeispiel

// 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
}

Um die Aufnahme zu starten oder zu stoppen, müssen Sie mit dem TCaptureDeviceManager auf das Gerät zugreifen. Geben Sie Aufnahmegeräte nie explizit frei; dies darf nur durch den Aufnahmemanager erfolgen.

Mit TCaptureDeviceManager können Sie von Drittherstellern entwickelte Aufnahmegeräte hinzufügen. Dieses neue Gerät kann mit der Methode RegisterCaptureDeviceClass wiederhergestellt werden. Nach der Registrierung des neuen Gerätes kann darauf im TCaptureDeviceManager wie auf jedes Standardgerät zugegriffen werden.

Wiedergabe von Medien

Die Klasse TMedia wurde zur Unterstützung der Wiedergabe von Medienquellen eingeführt. TMedia stellt auch Eigenschaften für Mediadateien, wie Dateiname, Größe, Lautstärke, Status, oder Dauer bereit.

Für einen erleichterten Zugriff wurde die nicht visuelle Komponente TMediaPlayer eingeführt. Rufen Sie die Methode Play und Stop auf, um die Wiedergabe einer Mediendatei zu starten bzw. zu stoppen oder eine laufende Mediendatei zu unterbrechen. Die aktuelle Position wird in der Eigenschaft CurrentTime angegeben. TMediaPlayer stellt auch Eigenschaften für Mediendateien, wie Duration, VideoSize, Volume oder State bereit.

  • Für die Wiedergabe einer Audiodatei mit TMediaPlayer geben Sie einfach den Namen der wiederzugebenden Datei in der Eigenschaft FileName an und rufen die Methode Play auf. Der Dateiname muss die Erweiterung und den Pfad der Datei enthalten, damit sie im Speicher gefunden wird.
  • Fügen Sie zum Anzeigen eines Videos ein TMediaPlayerControl-Steuerelement hinzu und verknüpfen Sie es durch Setzen der Eigenschaft MediaPlayer des TMediaPlayerControl mit TMediaPlayer. TMediaPlayerControl ist ein leeres Steuerelement, aber damit werden Videos auf Formualren platziert. (Wenn es sich bei der Mediendatei um eine Videodatei handelt, wird mit den Schritten zum Abspielen einer Audiodatei nur der Audioteil des Videos wiedergegeben.)

Video auf der Android-Plattform

  • Videos, die auf einem Android-Gerät wiedergegeben werden, laufen im Vollbildmodus.
    Mit der Schaltfläche Zurück des Gerätes beenden Sie den Vollbildmodus.
  • Android-Videodateien haben normalerweise das Format H.263.
    Weitere Informationen finden Sie unter http://developer.android.com/guide/appendix/media-formats.html.
  • Auf der Android-Plattform sind .3GP-Dateien typischerweise nur für Audiodaten gedacht, wie im Codefragmente für die mobile Entwicklung|Codefragment für die mobile Entwicklung AudioRecPlay gezeigt.
    Das .3GP-Format kann aber auch die Videowiedergabe unterstützen. Wenn Sie in FMX.Media.Android.pas die Verwendung von Video-Codec festlegen, können Sie Videos wie bei anderen Dateiformaten (wie z. B. mp4) abspielen. Diese Änderung würde allerdings bedeuten, dass Sie mit AudioRecSample keine Audiodateien aufnehmen und dann abspielen können.

Codebeispiel

//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();
}

Das FireMonkey-Feature für die Audio/Video-Wiedergabe unterstützt native Plattformformate für Mediendateien. Mit TMediaCodecManager können Sie benutzerdefinierte Medien-Codecs zur Erweiterung der Audio/Video-Unterstützung hinzufügen.

Siehe auch

Beispiele