Как воспроизвести звуковой файл

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

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

Хороший вопрос! Подобные вещи многие люди считают само собой разумеющимся.

theo 25.09.2008 00:20

@ theo, я согласен с тобой. Я действительно ищу ответ на аналогичный вопрос.

ThN 30.09.2011 22:44
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
7
2
5 224
5

Ответы 5

используйте Вызов 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), я ищу версию, которую он использовал, надеюсь, я смогу ее скачать.

Black Horus 25.09.2008 00:40

Есть элемент управления медиаплеером - в основном то, что использует 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;
            }
        }

Другие вопросы по теме