С C#, как мне воспроизвести (Пауза, Вперед ...) звуковой файл (mp3, ogg)? Файл может быть на жестком диске или в Интернете.
Есть ли какая-нибудь библиотека или класс, которые могут облегчить мне работу?
@ theo, я согласен с тобой. Я действительно ищу ответ на аналогичный вопрос.





используйте Вызов API PlaySound
Если вы не против включить Microsoft.VisualBasic.dll в свой проект, вы можете сделать это следующим образом:
var audio = new Microsoft.VisualBasic.Devices.Audio();
audio.Play("some file path");
Если вы хотите делать более сложные вещи, самый простой способ, который я знаю, - использовать API проигрывателя Windows Media. Вы добавляете DLL, а затем работаете с ней. API неуклюжий, но работает; Я использовал его для создания собственной оболочки для музыкального проигрывателя Windows Media Player для личного использования. Вот несколько полезных ссылок, с которых можно начать:
Создание веб-сайта с помощью ASP .NET 2.0 для навигации по вашей музыкальной библиотеке
Объектная модель Windows Media
Обновлено:
С тех пор как я написал это, я нашел более простой способ, если вы не против включения классов WPF в свой код. WPF (.NET 3.0 и более поздние версии) имеет класс Проигрыватель медиа, который является оболочкой для проигрывателя Windows Media. Это означает, что вам не нужно писать свою собственную оболочку, что приятно, поскольку, как я уже упоминал выше, WMP API довольно неуклюжий и сложный в использовании.
Я бы порекомендовал Библиотека BASS. Он может воспроизводить как музыкальные файлы на основе файлов, так и потоковый контент. Также доступна оболочка .NET.
Да, я это видел. Есть даже статья Codeproject о nBass (оболочке класса Bass). Это легко сделать, но он использует старую версию Bass (v1.8), я ищу версию, которую он использовал, надеюсь, я смогу ее скачать.
Есть элемент управления медиаплеером - в основном то, что использует Media Player. Вы можете поместить это в свою программу, и есть API, который вы можете использовать для управления этим. Думаю, это лучшее быстрое решение.
Alvas.Audio имеет класс Магнитофон со следующими возможностями:
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;
}
}
Хороший вопрос! Подобные вещи многие люди считают само собой разумеющимся.