Как декодировать wav, mp3 и / или ogg in.Net/Mono?


Я ищу кросс-платформенный (.Net и Mono на Windows, MacOSX и Linux) способ декодирования файлов wav, mp3 или ogg таким образом, чтобы я мог воспроизводить декодированные потоки через DirectSound или OpenAL по желанию.

Решение, которое может декодировать либо mp3, либо ogg, было бы достаточным - декодирование обоих не требуется. Если он (или другое решение) может также декодировать wav, это было бы идеально, но не является строго необходимым, так как я потенциально могу конвертировать мои файлы wav в mp3 или Огг.

Решение, которое может декодировать только wav-файлы, является только частичным решением, но я возьму то, что могу получить. ;- )

Вот что я уже посмотрел:

  • DirectSound и Alut оба поддерживают декодирование WAV, но Alut был объявлен устаревшим.
  • ffmpeg будет декодировать практически все, но, похоже, у него нет общего стабильного релиза на разных платформах?
  • я еще не пробовал csvorbis, но он очень старый, и я не уверен, каков его текущий статус является.

Вы более чем можете попытаться убедить меня, что одно из этих решений на самом деле является лучшим вариантом.

Спасибо.

7 5

7 ответов:

Для простой поддержки WAV-файлов вы можете посмотреть на реализацию mono в mcs / class / System/System.СМИ/Аудиоинформации.cs (http://anonsvn.mono-project.com/viewvc/trunk/mcs/class/System/System.Media/).

Для декодирования аудиофайлов ogg вы можете посмотреть модуль csvorbis на сервере mono sn: http://anonsvn.mono-project.com/viewvc/trunk/csvorbis/

Вы не упомянули вид лицензирования, который вы ищете. У меня были отличные результаты с FMOD, который доступен бесплатно для некоммерческих проектов. Он воспроизводит различные форматы, включая ogg и mp3, и имеет обширный API для управления тем, как их воспроизводить. Он кросс-платформенный, как вы и требовали.

FMOD нацелен на Игры в значительной степени; я не удивлюсь, если он уже поставляется с отличными 3D-функциями (хотя я не знаю, для чего конечно).

Как вы можете сказать, я довольно большой поклонник, что в основном потому, что было удивительно безболезненно получить пустой проект C# для воспроизведения файла OGG в первый раз.

Вы должны иметь возможность воспроизводить .wav файлы непосредственно с системой.Средства массовой информации.Класс soundplayer. Не уверен, что это поможет вашему случаю использования.

Я работал с ffmpeg, и пока мне это нравится. Да, есть несколько проблем в разных выпусках, но это самый эффективный из всех.

Чтобы частично ответить на мой собственный вопрос, оказывается, что довольно легко написать свой собственный загрузчик WAV. Я использовал эту статью, которая описывает формат файла wav:

Http://www.sonicspot.com/guide/wavefiles.html

Как всегда, fmod-это ваш ответ... пожалуйста, не стесняйтесь, чтобы получить решение всех ваших проблем на http://www.fmod.org/index.php/download#FMODExProgrammersAPI

Https://sites.google.com/site/cobnut3d/

SlimDX.DirectSound-это пример кода на C #.