Да, файлы MP3 сильно отличаются от файлов WAV. Файлы WAV содержат необработанные аудиоданные в виде выборок от начала до конца для рисования формы сигнала на выходе, точно так же, как файл растрового изображения содержит необработанные данные о пикселях слева направо, сверху вниз. Вы можете думать о WAV-файле как о растровом изображении звуковых волн - но вместо цветов пикселей он сохраняет интенсивность звука, обычно 44 100 из них в секунду, для двух каналов, если он стереофонический, и 2 байта на канал.
(Зная это, вы действительно можете рассчитать размер файла WAV-файла - для хранения 1 минуты аудио вам потребуется 60 секунд * 44100 семплов * 2 канала * 2 байта = 10,09 МБ.)
Файлы MP3 содержат математически модифицированную версию этого изображения и отбрасывают звук, который люди не могут слышать. Это работает аналогично тому, как изображения JPEG работают для сжатия изображений.
Точно так же, как видеокартам в конечном итоге нужны битовые карты для работы, так и звуковым картам, в конечном счете, нужны данные WAV для работы - так что да, вам нужен декодер.
В начале файлов Mp3 находится блок данных, называемый тегом ID3, который содержит набор основной информации о файле - имена исполнителей, длину трека, названия альбомов и тому подобное. Вы можете использовать что-то вроде C # ID3 для чтения / записи тегов ID3 в C #.
Что касается самого звука, я не уверен, что есть декодеры Mp3, полностью написанные на C #. Технически нет никаких причин, по которым это невозможно сделать (это также должно быть хорошо с точки зрения производительности), но стандарт довольно слабый, а математика интенсивная, поэтому люди обычно используют для декодирования такие вещи, как FFMpeg. Некоторые идеи в этом поиске Google .
Если вам не нужно выполнять какую-либо специальную обработку и вы просто хотите воспроизвести аудио, вы можете использовать элемент WPF / Silverlight Media .
Вероятно, вы можете получить некоторые подсказки из приложения Джоша Смита Podder .