Как воспроизвести звуковой файл - PullRequest
7 голосов
/ 25 сентября 2008

С помощью C #, как воспроизвести (пауза, вперед ...) звуковой файл (mp3, ogg)? Файл может быть на жестком диске или в Интернете.

Есть ли какая-нибудь библиотека или класс, который может облегчить мне работу?

Ответы [ 5 ]

7 голосов
/ 25 сентября 2008

Если вы не против включить Microsoft.VisualBasic.dll в ваш проект, вы можете сделать это следующим образом:

var audio = new Microsoft.VisualBasic.Devices.Audio();
audio.Play("some file path");

Если вы хотите делать более сложные вещи, самый простой способ, который я знаю, это использовать Windows Media Player API . Вы добавляете DLL, а затем работаете с ней. API немного неуклюжий, но он работает; Я использовал его, чтобы создать свой собственный музыкальный проигрыватель для Windows Media Player для личного использования. Вот несколько полезных ссылок для начала:

Создание веб-сайта с ASP .NET 2.0 для навигации по музыкальной библиотеке

объектная модель Windows Media

Пусть играет музыка!

EDIT:

С тех пор, как я написал это, я нашел более простой способ, если вы не возражаете против включения классов WPF в свой код. WPF (.NET 3.0 и более поздние версии) имеет класс MediaPlayer , который является оболочкой для проигрывателя Windows Media. Это означает, что вам не нужно писать собственную оболочку, что приятно, поскольку, как я уже упоминал выше, API-интерфейс WMP довольно громоздкий и сложный в использовании.

4 голосов
/ 25 сентября 2008

Я бы порекомендовал BASS Library . Он может воспроизводить как музыкальные файлы на основе файлов, так и потоковое содержимое. Также доступна оболочка .NET.

2 голосов
/ 12 февраля 2014

Alvas.Audio имеет RecordPlayer класс со следующими возможностями:

        public static void TestRecordPlayer()
        {
            RecordPlayer rp = new RecordPlayer();
            rp.PropertyChanged += new PropertyChangedEventHandler(rp_PropertyChanged);
            rp.Open(new Mp3Reader(File.OpenRead("in.mp3")));
            rp.Play();
            rp.Forward(1000);
            rp.Pause();
        }

        static void rp_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            switch (e.PropertyName)
            {
                case RecordPlayer.StateProperty:
                    RecordPlayer rp = ((RecordPlayer)sender);
                    if (rp.State == DeviceState.Stopped)
                    {
                        rp.Close();
                    }
                    break;
            }
        }
0 голосов
/ 25 сентября 2008

Есть управление медиаплеером - в основном то, что использует медиаплеер. Вы можете поместить это в свою программу, и есть API, который вы можете использовать для управления им. Я думаю, что это лучшее быстрое решение.

0 голосов
/ 25 сентября 2008

использование вызов PlaySound API

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...