C# の Windows フォームアプリケーションで MP3 ファイルを再生する

Muhammad Zeeshan 2023年10月12日
  1. C# で Windows フォームアプリケーションを使用して単純な Mp3 プレーヤーを作成する
  2. C#DirectShow 機能を使用して Mp3 Windows フォームアプリケーションを作成する
C# の Windows フォームアプリケーションで MP3 ファイルを再生する

この記事では、C#Windows フォームアプリケーションと Windows Media Player を使用して単純な C#mp3 プレーヤーを構築する方法を示します。

C# で Windows フォームアプリケーションを使用して単純な Mp3 プレーヤーを作成する

まず、次の手順に従って新しい Windows フォームを作成します。

  • Microsoft Visual Studio 2017 または更新されたバージョンを開きます。
  • 左上隅にあるファイルを見つけて、新しいプロジェクトを開きます。
  • 次に、Windows フォームアプリケーションを選択して名前を付け、OK をクリックします。
  • OK をクリックすると、新しい空のウィンドウフォームが表示されます。

次に、フォームをデザインします。

Windows フォームを作成したら、デザインします。ツールボックスに WindowsMediaPlayer アイテムがない場合は、次の手順に従います。

  • コンポーネントを右クリックし、ツールボックス領域のアイテムの選択をクリックすると、新しいウィンドウが表示されます。
  • COM コンポーネントタブを選択し、リストから Windows Media Player 項目をクリックします。

アイテムの追加:

  • Windows Media Player をフォームにドラッグアンドドロップして、その位置を調整します。
  • ListBox を追加し、Audiolist という名前を付けて mp3 ファイルリストを選択します。
  • ツールボックスからボタンを追加し、ChooseButton という名前を付けます。ボタンを使用してプレイリストを選択しています。リストボックスからオーディオファイルを選択すると、Windows Media Player で再生されるオーディオファイルのプレイリストがリストボックスに表示されます。

これらの特定の手順に従って、MP3 プレーヤーの Windows フォームを作成できます。

必要なライブラリ:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

まず、filefilepath という名前の 2つの文字列配列型グローバル変数を初期化します。

string[] file, filepath;

次に、fileOpen という名前の OpenFileDialog 型変数を作成します。これは、ストレージからファイルを選択するためのダイアログボックスを起動するために使用されます。

OpenFileDialog fileOpen = new OpenFileDialog();

次に、条件を適用し、以下をパラメーターとして渡します。

if (fileOpen.ShowDialog() == System.Windows.Forms.DialogResult.OK)

この式が true の場合、ファイルの名前は file 変数に保存されます。

file = fileOpen.SafeFileNames;

以下のコマンドを使用して、ファイルのパス全体を filepath という名前のパス変数に保存します。

filepath = fileOpen.FileNames;

次に、for ループを使用して、ListBox にオーディオファイルを追加します。

for (int i = 0; i < file.Length; i++) {
  Audiolist.Items.Add(file[i]);
}

その後、ダブルクリックして ListBox のクリックイベントを生成します。

private void Audiolist_SelectedIndexChanged(object sender, EventArgs e) {}

次に、このコードは Audiolist 本文に貼り付けられます。このコードは、リストボックスで指定した名前に関係なく、リストまたはそのファイルへのパスを WindowsMediaPlayer に転送します。

private void Audiolist_SelectedIndexChanged(object sender, EventArgs e) {
  axWindowsMediaPlayer1.URL = filepath[Audiolist.SelectedIndex];
}

C#Windows フォームアプリケーションと Windows Media Player を使用して単純な C#mp3 プレーヤーを構築するためのソースコードを以下に示します。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Mp3Player {
  public partial class Form1 : Form {
    string[] file, filepath;
    public Form1() {
      InitializeComponent();
    }
    private void ChooseButton_Click(object sender, EventArgs e) {
      OpenFileDialog fileOpen = new OpenFileDialog();
      if (fileOpen.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
        file = fileOpen.SafeFileNames;
        filepath = fileOpen.FileNames;
        for (int i = 0; i < file.Length; i++) {
          Audiolist.Items.Add(file[i]);
        }
      }
    }
    private void Audiolist_SelectedIndexChanged(object sender, EventArgs e) {
      axWindowsMediaPlayer1.URL = filepath[Audiolist.SelectedIndex];
    }
  }
}

C#DirectShow 機能を使用して Mp3 Windows フォームアプリケーションを作成する

DirectShow 機能を使用して、WindowsMediaPlayer で Mp3Windows フォームアプリケーションを作成します。

Tlbimp は、COM タイプライブラリのタイプ定義を、共通言語の実行可能アセンブリの同等の定義に変換します。

Tlbimp.exe の出力は、元のタイプライブラリで宣言されたタイプのランタイムメタデータを含むバイナリファイル(アセンブリ)です。

QuartzTypeLib.dll を作成するには、次の手順に従います。

  • 最初に tlbimp ツールを実行します。
  • TlbImp.exe %windir%\system32\quartz.dll を実行します(この場所またはディレクトリはデバイスごとに異なる場合があります)。
  • 出力は QuartzTypeLib.dll になります。
  • ソリューションエクスプローラーでプロジェクト名を右クリックし、[追加]メニュー項目を選択してから[参照]を選択します。QuartzTypeLib.dll を COM 参照としてプロジェクトに追加します。
  • プロジェクトで参照を展開し、QuartzTypeLib 参照を探します。埋め込み相互運用タイプを右クリックしてプロパティを選択し、false に変更します。
  • プロジェクト設定で 32 ビットを優先設定を無効にします。例外を取得したくない場合は、[ビルド]タブ。

このソースコードを使用して、Mp3Windows フォームアプリケーションを作成できます。

using QuartzTypeLib;

public sealed class DirectShowPlayer {
  private FilgraphManager fgm;
  public void Play(string filepath) {
    FilgraphManager fgm = new FilgraphManager();
    fgm.RenderFile(filepath);
    fgm.Run();
  }
  public void Stop() {
    fgm?.Stop();
  }
}
Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn