Come decodificare wav, mp3, e / o ogg in .Net / Mono?
Domanda
Sto cercando un cross-platform (.Net e Mono su Windows, MacOSX e Linux) modo per decodificare wav, mp3 o ogg tali che posso poi giocare i flussi decodificati attraverso DirectSound o OpenAL, se lo desideri.
Una soluzione che sia in grado di decodificare mp3 o ogg sarebbe sufficiente - decodifica entrambi non è necessaria. Se (o un'altra soluzione) in grado di decodificare wav così, che sarebbe l'ideale, ma non è strettamente necessario, in quanto ho potuto potenzialmente convertire i file WAV in MP3 o ogg.
Una soluzione in grado di decodificare solo i file wav è solo una soluzione parziale, ma mi prendo quello che posso ottenere. ; -)
Ecco quello che ho già guardato:
- DirectSound e ALUT sia il supporto decodifica WAV, ma ALUT è stato sconsigliato.
- ffmpeg sarà decodificare qualsiasi cosa, ma non sembra avere una versione stabile comune attraverso le piattaforme?
- Non ho provato csvorbis ancora, ma è molto vecchio e non sono sicuro di quello che il suo stato attuale.
Siete più che benvenuti a cercare di pursuade me che una di queste soluzioni di cui sopra è in realtà l'opzione migliore.
Grazie.
Soluzione
Per il semplice supporto per i file WAV si può guardare l'implementazione di mono in MCS / classe / System / System.Media / AudioData.cs ( http://anonsvn.mono-project.com/viewvc/trunk/mcs/class/System/System.Media/ ) .
Per la decodifica dei file audio ogg si può guardare il modulo csvorbis server sn di mono: http://anonsvn.mono-project.com/viewvc/trunk/csvorbis/
Altri suggerimenti
Non hai menzionato il tipo di licenza che stai cercando. Ho avuto ottimi risultati con FMOD , che è disponibile gratuitamente per uso non commerciale progetti. Si svolge una diversa varietà di formati, tra cui ogg e mp3, e ha una vasta API per controllare come giocarle. E 'cross-platform, come si richiede.
FMOD rivolge giochi in larga misura; Non sarei sorpreso se già dotato di ottime funzionalità 3D (anche se non so per certo).
Come si può dire che sono un bel ventilatore, che è in gran parte perché è stato sorprendentemente indolore per ottenere un progetto vuoto C # per riprodurre un file OGG per la prima volta.
Si dovrebbe essere in grado di riprodurre i file wav torna direttamente con System.Media.SoundPlayer. Non sono sicuro se questo aiuta il vostro caso d'uso.
Ho lavorato con ffmpeg e finora mi piace. Sì ci sono alcuni problemi in tutta release, ma è il più efficiente di tutti.
Per rispondere in parte alla mia domanda, si scopre che è abbastanza facile da scrivere il proprio WAV caricatore. Ho usato questo articolo che descrive il formato di file wav:
come sempre, fmod è la vostra risposta ... non esitate a ottenere la soluzione a tutti i vostri problemi su http://www.fmod.org /index.php/download#FMODExProgrammersAPI
https://sites.google.com/site/cobnut3d/
SlimDX.DirectSound -. È un esempio di codice per C #