Cómo decodificar archivos WAV, MP3, y / o ogg en .Net / Mono?
Pregunta
Busco una multiplataforma (.Net y Mono en Windows, MacOSX y Linux) manera de decodificar archivos WAV, MP3, OGG o archivos de este tipo, que luego puedo jugar los flujos decodificados a través de DirectSound o OpenAL lo deseas.
Una solución que puede decodificar cualquiera de mp3 o ogg serían suficientes - decodificar tanto no es necesario. Si (u otra solución) puede decodificar wav así, eso sería lo ideal, pero no es estrictamente necesario, ya que podría potencialmente convertir mis archivos WAV a MP3 o OGG.
Una solución que sólo puede decodificar archivos WAV es sólo una solución parcial, pero me quedo con lo que puedo conseguir. ; -)
Esto es lo que ya he mirado en:
- DirectSound y Alut tanto el apoyo de decodificación WAV, pero Alut ha dejado de utilizarse.
- FFmpeg decodificar casi cualquier cosa, pero no parecen tener un comunicado común estable a través de plataformas?
- No he probado csvorbis todavía, pero es muy viejo y no estoy seguro de cuál es su situación actual es.
Usted es más que bienvenido para tratar de persuadir a que una de estas soluciones anteriores es realmente la mejor opción.
Gracias.
Solución
Para soporte sencillo para archivos WAV se puede estudiar su aplicación de mono en el mcs / clase / Sistema / System.Media / AudioData.cs ( http://anonsvn.mono-project.com/viewvc/trunk/mcs/class/System/System.Media/ ) .
Para la decodificación de archivos de audio OGG se puede ver en el módulo de servidor csvorbis sn del mono: http://anonsvn.mono-project.com/viewvc/trunk/csvorbis/
Otros consejos
No ha mencionado el tipo de licencia que está buscando. He tenido excelentes resultados con FMOD , que está disponible de forma gratuita para uso no comercial proyectos. Desempeña una amplia variedad de formatos, incluyendo OGG y MP3, y tiene una extensa API para controlar cómo tocarlos. Es multiplataforma, al igual que usted requiere.
FMOD se dirige a juegos en gran medida; No me sorprendería que ya viene con excelentes características 3D (aunque no sé a ciencia cierta).
Como se puede decir que soy un gran ventilador, que es sobre todo porque era sorprendentemente indolora de conseguir un proyecto de C # en blanco para reproducir un archivo OGG por primera vez.
Usted debe ser capaz de reproducir archivos .wav directamente con System.Media.SoundPlayer. No estoy seguro si eso ayuda a su caso de uso.
trabajé con ffmpeg y hasta ahora me gusta. Sí existen algunos problemas a través de comunicados, pero es el más eficiente de todos.
Para responder parcialmente a mi propia pregunta, resulta que es bastante fácil de escribir su propio cargador de WAV. He utilizado este artículo que describe el formato de archivo WAV:
como siempre, HOQF es su respuesta ... no dude en obtener una solución a todos sus problemas en http://www.fmod.org /index.php/download#FMODExProgrammersAPI
https://sites.google.com/site/cobnut3d/
SlimDX.DirectSound -. Es un ejemplo de código para C #