FireMonkey でのオーディオ/ビデオ

提供: RAD Studio
移動先: 案内検索

FireMonkey アプリケーション ガイド への移動

FireMonkey では、メディア ファイル(オーディオおよびビデオ)のキャプチャと再生をサポートしています。

この機能は Windows と macOS のプラットフォームで以下のように使用できます:

  • Windows の実装では DirectShow を使用しており、オーディオ/ビデオ機能はあらゆる Windows バージョンで動作します。
  • QuickTime は Apple 非推奨であるため、macOS 実装は現在 AVFoundation を使用しています。

サポート対象のファイル形式

以下の形式でメディア ファイルを保存し使用することをお勧めします。

  • .wav(Windows の場合)
  • .caf(iOS および Mac の場合)
  • .3GP(Android の場合)

MP3 ファイルなど、他の種類のメディア ファイルを再生することもできます。たとえば、Android のビデオ ファイルは通常 H.263 形式です。

オーディオ/ビデオのキャプチャ

キャプチャ デバイスの基底クラスは TCaptureDevice です。このクラスは、キャプチャ デバイスの基本的なメソッドおよびプロパティをカプセル化したものです。TAudioCaptureDevice および TVideoCaptureDevice では、TCaptureDevice の実装を拡張して、それぞれ、オーディオ キャプチャ デバイス(マイクなど)とビデオ キャプチャ デバイス(Web カメラなど)の具体的な動作を追加しています。

キャプチャ デバイスへのアクセスと管理のために TCaptureDeviceManager が導入されています。 TCaptureDeviceManager には、以下のための具体的なメソッドとプロパティがあります。

現在使用しているデバイスは、デバイス マネージャの Current プロパティで指定されます。Current は、アプリケーションが TCaptureDeviceManager へのアクセスを要求したときに作成され、アプリケーションが終了するまで保持されます。

コード例

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

キャプチャ処理を開始または停止するには、TCaptureDeviceManager を使ってデバイスへのアクセスを取得する必要があります。絶対にキャプチャ デバイスを明示的に破棄しないでください。キャプチャ マネージャだけがそれを行います。

TCaptureDeviceManager では、サードパーティ ベンダで開発されたカスタム キャプチャ デバイスを追加することができます。この新しいデバイスは、RegisterCaptureDeviceClass メソッドを使って元に戻すことができます。新しいデバイスは、登録後、TCaptureDeviceManager であらゆる標準デバイスとしてアクセスすることができます。

メディアの再生

メディア ソースの再生をサポートするために TMedia クラスが導入されました。TMedia では、ファイル名サイズ音量状態時間などのメディア ファイル プロパティを公開しています。

簡単にアクセスできるよう、非ビジュアル コンポーネント TMediaPlayer が導入されました。Play メソッドを呼び出すと、メディア ファイルの再生を開始でき、Stop メソッドを呼び出すと、再生中のメディア ファイルを停止または一時停止できます。現在の位置は CurrentTime プロパティで指定されます。また、TMediaPlayer では、DurationVideoSizeVolumeState などのメディア ファイルのプロパティも公開しています。

  • TMediaPlayer を使ってオーディオ ファイルを再生するには、FileName プロパティを設定することで再生するファイルの名前を指定し、Play メソッドを呼び出すだけです。ファイル名には、メモリ上で特定できるようにファイルのパスを明示し、拡張子も付ける必要があります。
  • ビデオを表示するには、TMediaPlayerControl コントロールを追加し、TMediaPlayerControlMediaPlayer プロパティを設定することで TMediaPlayer をコントロールにリンクします。TMediaPlayerControl は空のコントロールですが、ビデオをフォームに配置するのに使用されます (メディア ファイルがビデオ ファイルの場合、オーディオ ファイルの再生手順に従うと、ビデオのオーディオ部分が再生されるだけです)。
  • コントロールやメニューの項目に関連付けることができるメディア プレーヤー コンポーネントの標準アクションには、StartStopPlayPauseCurrentTimeVolume があります。

Android プラットフォームのビデオ

  • Android デバイスで再生されるビデオはフルスクリーン モードで動作します。
    フルスクリーン モードを終了するには、デバイスの戻るボタンを使用します。
  • Android のビデオ ファイルは通常 H.263 形式です。
    詳細については、http://developer.android.com/guide/appendix/media-formats.html を参照してください。
  • モバイル サンプル コード AudioRecPlay で示しているように、Android プラットフォームでは、.3GP ファイルは通常オーディ専用です。
    ただし、.3GP 形式でもビデオの再生をサポートできます。ビデオ コーデックを使用するように FMX.Media.Android.pas で切り替える場合は、他のファイル(mp4 など)の場合と同じようにビデオを再生できます。ただし、このように変更すると、AudioRecPlay サンプルの場合のようにオーディオを録音して再生することはできなくなります。

コード例

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

FireMonkey のオーディオ/ビデオ再生機能では、ネイティブ プラットフォームのメディア ファイル形式をサポートしています。TMediaCodecManager を使用すると、カスタム メディア コーデックを登録してオーディオ/ビデオ機能のサポートを拡張することが可能です。

関連項目

サンプル