56

私はWinFormアプリケーションを開発しています。ユーザーがボタンをクリックしたときにMP3ファイルを再生したい。

MP3ファイルは、アプリケーションが実行されるコンピューターのファイルシステムにあります。
私はしばらくの間グーグルで検索しました、そして、私はSystem.Media.SoundPlayerクラスについての情報を見つけました。しかし、このSoundPlayerクラスは.wav形式のファイルを再生するためにのみ使用できることを読みました。

.mp3形式のファイルを再生するために使用できるクラスは何ですか?

どんな助けでも大歓迎です。

4

6 に答える 6

43

以下のリンクは、c#を使用してWindowsフォームからmp3ファイルを再生することについての非常に優れたチュートリアルを提供します。

http://www.daniweb.com/software-development/csharp/threads/292695/playing-mp3-in-c

このリンクをクリックすると、Windowsフォームを使用してmp3曲を再生する方法に関する多くの情報が含まれているトピックに移動します。また、同じことを達成しようとする他の多くのプロジェクトも含まれています。

http://social.msdn.microsoft.com/forums/en-US/csharpgeneral/thread/3dbfb9a3-4e14-41d1-afbb-1790420706fe

たとえば、次のコードを.mp3に使用します。

WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();

wplayer.URL = "My MP3 file.mp3";
wplayer.Controls.Play();

次に、wplayer.Controls.Play();のみを配置します。Button_Clickイベントで。

たとえば、次のコードを.wavに使用します。

System.Media.SoundPlayer player = new System.Media.SoundPlayer();

player.SoundLocation = "Sound.wav";
player.Play();

player.Play();を置きます。Button_Clickイベントで、それは機能します。

于 2013-02-22T13:56:36.183 に答える
36

1)最も簡単な方法はWMPLibを使用することです

WMPLib.WindowsMediaPlayer Player;

private void PlayFile(String url)
{
    Player = new WMPLib.WindowsMediaPlayer();
    Player.PlayStateChange += Player_PlayStateChange;
    Player.URL = url;
    Player.controls.play();
}

private void Player_PlayStateChange(int NewState)
{
    if ((WMPLib.WMPPlayState)NewState == WMPLib.WMPPlayState.wmppsStopped)
    {
        //Actions on stop
    }
}

2)または、オープンソースライブラリNAudioを使用することもできます。さまざまな方法を使用してmp3ファイルを再生でき、実際にはファイルを再生するだけではありません。

これは簡単です

using NAudio;
using NAudio.Wave;

IWavePlayer waveOutDevice = new WaveOut();
AudioFileReader audioFileReader = new AudioFileReader("Hadouken! - Ugly.mp3");

waveOutDevice.Init(audioFileReader);
waveOutDevice.Play();

停止後に処分することを忘れないでください

waveOutDevice.Stop();
audioFileReader.Dispose();
waveOutDevice.Dispose();
于 2013-02-22T13:54:44.170 に答える
9
  1. まず、プロジェクトのプロパティに移動します
  2. 参照の追加をクリックします
  3. ウィンドウメディアプレーヤーのCOMオブジェクトの下にライブラリを追加し、必要な場所にコードを入力します


    ソース:

        WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();
    
        wplayer.URL = @"C:\Users\Adil M\Documents\Visual Studio 2012\adil.mp3";
        wplayer.controls.play();
    
于 2015-02-07T16:54:44.447 に答える
2

APIを使用してmciSendString、MP3またはWAVファイルを再生できます。

[DllImport("winmm.dll")]
public static extern uint mciSendString( 
    string lpstrCommand,
    StringBuilder lpstrReturnString,
    int uReturnLength,
    IntPtr hWndCallback
);

mciSendString(@"close temp_alias", null, 0, IntPtr.Zero);
mciSendString(@"open ""music.mp3"" alias temp_alias", null, 0, IntPtr.Zero);
mciSendString("play temp_alias repeat", null, 0, IntPtr.Zero);
于 2016-06-24T06:20:50.483 に答える
0

古いDirectShow機能を使用してそれを行うことができます。

この答えはあなたに作成する方法を教えますQuartzTypeLib.dll

  1. tlbimpツールを実行します(あなたの場合、パスは異なります):

  2. 走るTlbImp.exe %windir%\system32\quartz.dll /out:QuartzTypeLib.dll

または、このプロジェクトにはライブラリが含まれていますinterop.QuartzTypeLib.dll。これは、基本的に手順1および2と同じです。次の手順では、このライブラリの使用方法を説明します。

  1. 生成されたQuartzTypeLib.dllをCOM参照としてプロジェクトに追加します(「ソリューションエクスプローラー」でプロジェクト名を右クリックし、「追加」メニュー項目を選択してから「参照」を選択します)。

  2. プロジェクトで「参照」を展開し、QuartzTypeLib参照を見つけます。それを右クリックしてプロパティを選択し、[埋め込み相互運用タイプ]をfalseに変更します。(そうしないと、プロジェクトでFilgraphManagerクラス(およびおそらく他のいくつかのクラス)を使用できなくなります)。

  3. [プロジェクト設定]の[ビルド]タブで、[32ビットを優先]フラグを無効にする必要がありました。無効にしないと、次の例外が発生します。System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x80040266

  4. このクラスを使用して、お気に入りのMP3ファイルを再生します。

    using QuartzTypeLib;
    
    public sealed class DirectShowPlayer
    {
        private FilgraphManager FilterGraph;
    
        public void Play(string path)
        {
            FilgraphManager = new FilgraphManager();
            FilterGraph.RenderFile(path);
            FilterGraph.Run();
        }
    
        public void Stop()
        {
            FilterGraph?.Stop();
        }
    }
    

PS: TlbImp.exeここで見つけることができます: "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin"、または "C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.7.2 Tools"

于 2019-10-03T00:46:35.223 に答える
-3

リファクタリング:

new WindowsMediaPlayer() { URL = "MyMusic.mp3" }.controls.play();
于 2017-09-18T00:08:53.603 に答える