Подтвердить что ты не робот

Воспроизведение файла MP3 в приложении WinForm

Я разрабатываю приложение WinForm. Я хочу играть в MP3 файл, когда пользователь нажимает кнопку.

Файл MP3 находится в файловой системе компьютера, на котором выполняется приложение.
У меня есть Googled на некоторое время, и я нашел информацию о классе System.Media.SoundPlayer. Но я читал, что класс SoundPlayer может использоваться только для воспроизведения файлов в формате .wav.

Какие классы можно использовать для воспроизведения файлов в формате .mp3?

Любая помощь будет принята с благодарностью.

4b9b3361

Ответ 1

В приведенной ниже ссылке дается очень хороший урок о воспроизведении mp3 файлов из формы Windows с помощью С#:

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

Эта ссылка приведет вас к теме, которая содержит много информации о том, как играть в mp3-песню, используя формы Windows. Он также содержит много других проектов, пытаясь добиться того же:

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

Поместите плеер .Play(); в событии Button_Click, и он будет работать.

Ответ 2

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

Ответ 3

  • сначала перейдите к свойствам вашего проекта.
  • нажмите, чтобы добавить ссылки
  • добавить библиотеку под COM-объектом для оконного медиаплеера затем введите код, в котором вы хотите


    Источник:

        WMPLib.WindowsMediaPlayer wplayer = new WMPLib.WindowsMediaPlayer();
    
        wplayer.URL = @"C:\Users\Adil M\Documents\Visual Studio 2012\adil.mp3";
        wplayer.controls.play();
    

Ответ 4

Вы можете использовать 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);

Ответ 5

Вы можете сделать это, используя старые функции 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"

Ответ 6

Рефакторинг:

new WindowsMediaPlayer() { URL = "MyMusic.mp3" }.controls.play();