Как декодировать wav, mp3 и / или ogg в .Net / Mono? - PullRequest
5 голосов
/ 10 апреля 2009

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

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

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

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

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

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

Спасибо.

Ответы [ 7 ]

4 голосов
/ 19 октября 2009

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

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

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

1 голос
/ 11 апреля 2009

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

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

1 голос
/ 10 апреля 2009

Вы должны иметь возможность воспроизводить файлы .wav напрямую с помощью System.Media.SoundPlayer. Не уверен, поможет ли это вашему варианту использования.

0 голосов
/ 29 мая 2015

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

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

0 голосов
/ 19 марта 2010

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

0 голосов
/ 11 апреля 2009

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

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

0 голосов
/ 10 апреля 2009

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

...