C#メモ Windowsフォームアプリケーションでm4aファイルを再生してみる
再生するにはどうすりゃいいんかなぁ…とネットに聞いてみたら、Windowsなら何とかなりそうだったので試してみることに。
ポイントはこんなとこ。
- 参照設定でPresentationCore.dllとWindowsBase.dllの参照を追加する
- System.Windows.Media.MediaPlayerをnewでインスタンス化する
- System.Windows.Media.MediaPlayer.Open()メソッドで開くメディアファイルを指定する
- System.Windows.Media.MediaPlayer.Play()メソッドでメディアファイルを再生、System.Windows.Media.MediaPlayer.Stop()メソッドで再生を停止する
んで、まずはdllの参照設定をする。
参照設定はWPFのものを使うんだけど、今回はこんな感じ。
- ソリューションエクスプローラーでツリー上の参照を右クリックして"参照の追加"メニューをクリックする。
- 参照マネージャってダイアログが開くので、左にあるメニューの"参照"をクリックしてから右下の"参照"ボタンをクリックする。
- 参照するファイルの選択ダイアログが開くので、WPFフォルダーにある"PresentationCore.dll"ファイルを選択して"追加"ボタンをクリックする。
今回の場合はC:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\PresentationCore.dllを選択した。
- 1.~3.と同じ要領で"WindowsBase.dll"を追加する。
これも今回はC:\Windows\Microsoft.NET\Framework\v4.0.30319\WPF\WindowsBase.dllを選択した。
- 2つのdllをインポートするとソリューションエクスプローラの参照のところに表示されるので、念のため確認しとく。
ちなみに、WindowsBase.dllの参照を忘れるとビルド時にこんな感じで怒られちゃうので注意…。
error CS0012: 型 'Freezable’ は、参照されていないアセンブリに定義されています。アセンブリ 'WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35’ に参照を追加する必要があります。
んで、こんなフォームを用意しとく。
再生ボタンと停止ボタンの2つのボタンを追加する感じ。
再生ボタンはOnClickPlayButtonってメソッド名でClickイベントを定義しておく。
停止ボタンはOnClickStopButtonってメソッド名でClickイベントを定義しておく。
再生するm4aファイルはsample.m4aってファイル名でデスクトップに置いておくことにすると、コードはこんな感じ。
public partial class MainForm : Form { /// <summary> /// メディアプレイヤー /// </summary> private System.Windows.Media.MediaPlayer Player { get; set; } = null; /// <summary> /// コンストラクタ /// </summary> public MainForm() { InitializeComponent(); } /// <summary> /// 再生ボタンをクリックしたときのイベント /// </summary> /// <param name="sender">イベントを発生したオブジェクト</param> /// <param name="arguments">イベントの引数</param> private void OnClickPlayButton(object sender, EventArgs arguments) { // 再生するファイルのパスを設定する string location = @"C:\Users\tetsuyanbo\Desktop\Sample.m4a"; if(!System.IO.File.Exists(location)) { // ファイルが見つからない場合はエラー終了する throw new System.IO.FileNotFoundException(location); } // MediaPlayerをインスタンス化する Player = new System.Windows.Media.MediaPlayer(); // m4aファイルを開く Player.Open(new System.Uri(location)); // m4aファイルを再生する Player.Play(); } /// <summary> /// 停止ボタンをクリックしたときのイベント /// </summary> /// <param name="sender">イベントを発生したオブジェクト</param> /// <param name="arguments">イベントの引数</param> private void OnClickStopButton(object sender, EventArgs arguments) { // MediaPlayerがインスタンス化されているかをあらかじめチェックしておく if (Player != null) { // 再生を停止する Player.Stop(); // ファイルを閉じる Player.Close(); // 初期化する Player = null; } } }
実行してみたらこんな感じ。
再生ボタンをクリックするとOnClickPlayButtonメソッドが呼ばれてm4aファイルが再生される…って言っても動画ではないので、音が鳴ってることを想像してください…。
停止ボタンをクリックするとOnClickSpotButtonメソッドが呼ばれてm4aの音が鳴り止む。
んまま、明日への自分へのメモってことで。
ディスカッション
コメント一覧
まだ、コメントがありません