Delphi
FMX
DelphiDay 7

Delphi FMXフレームワークでm4aサウンドファイルを再生するWindowsアプリを作成する

DelphiのFMXフレームワークを使うと簡単にサウンドファイルを再生できます。
例えばhoge.mp3ファイルを再生する場合には,FormにTMediaPlayerを張り付けて以下のように記述します。

uses
  FMX.Media;

MediaPlayer1.FileName := 'hoge.mp3';
if MediaPlayer1.Media<>nil then begin
  MediaPlayer1.Play;
end;

これ以外にも,TMediaPlayerは,Stopメソッドや,CurrentTime,Duration,Volume,State などのプロパティも利用できます。

そこで,Windowsで利用できるサウンドファイルを調べてみました。
http://docwiki.embarcadero.com/Libraries/Tokyo/ja/FMX.Media.TMediaCodecManager
によると,

wma .mp3 .wav

となっています。m4aファイルは実装されていません。これはDirectXにコーデックがないためと思われます。
そこで,DirectXのコーデックを
http://www.majorgeeks.com/files/details/windows_8_codecs.html
よりダウンロードしてインストールしました。
さらに,以下のコードをTMediaPlayerの配置されるフォームに記述しました。

initialization
  TMediaCodecManager.RegisterMediaCodecClass('.m4a', 'm4a Files', TMediaType.Audio, TWindowsMediaCodec);

そうすると,

MediaPlayer1.FileName := 'hoge.m4a';
if MediaPlayer1.Media<>nil then begin
  MediaPlayer1.Play;
end;

でhoge.m4aファイルを再生することができました。

追記

MSDN
https://msdn.microsoft.com/ja-jp/library/windows/desktop/dd757927(v=vs.85).aspx
によると,m4aファイルがコーデックのインストールなしに利用できると書かれています。もしかすると,mfpackを使うとコーデックのインストールなしにできるかもしれません。
https://sourceforge.net/projects/mfpack/