2009-04-10 5 views
5

Je suis à la recherche d'un moyen multiplate-forme (.Net et Mono sous Windows, MacOSX et Linux) pour décoder les fichiers wav, mp3 ou ogg de sorte que je puisse ensuite lire les flux décodés via DirectSound ou OpenAL.Comment décoder wav, mp3, et/ou ogg dans .Net/Mono?

Une solution qui peut décoder soit mp3 soit ogg serait suffisante - décoder les deux n'est pas nécessaire. Si elle (ou une autre solution) peut aussi décoder wav, ce serait idéal, mais ce n'est pas strictement nécessaire puisque je pourrais potentiellement convertir mes fichiers wav en mp3 ou en ogg.

Une solution qui ne peut que décoder les fichiers wav n'est qu'une solution partielle, mais je vais prendre ce que je peux obtenir. ;-)

Voici ce que je l'ai déjà regardé:

  • DirectSound et Alut à la fois support de décodage WAV, mais Alut a été dépréciée. Ffmpeg décode à peu près n'importe quoi, mais il ne semble pas avoir de version stable commune sur toutes les plates-formes?
  • Je n'ai pas encore essayé csvorbis, mais c'est très ancien et je ne suis pas sûr de son statut actuel.

Vous êtes plus que bienvenus pour essayer de me convaincre que l'une de ces solutions ci-dessus est en fait la meilleure option.

Merci.

Répondre

0

J'ai travaillé avec ffmpeg et jusqu'ici je l'aime. Oui, il y a peu de problèmes dans les versions, mais c'est le plus efficace de tous.

+0

Est-il facile de redistribuer ffmpeg sur plusieurs plates-formes? Plus précisément, existe-t-il des binaires Windows/Mac/Linux facilement distribués qui sont compatibles avec Tao.Ffmpeg ou un autre wrapper .Net? –

+0

devrait être assez facile .. Trinité l'utilise pour tout transcoder leurs médias pour xbox –

1

Vous devriez pouvoir lire des fichiers .wav directement avec System.Media.SoundPlayer. Je ne sais pas si cela aide votre cas d'utilisation.

+0

Malheureusement, je ne pense pas. J'ai besoin de la forme d'onde brute pour que je puisse la transmettre à DirectSound/OpenAl pour réaliser des effets sonores 3D. –

+0

Un autre problème est que SoundPlayer ne joue pas bien avec GC et vous avez besoin de hacks supplémentaires (http://www.codeproject.com/KB/audio-video/soundplayerbug.aspx) –

0

Pour répondre en partie à ma propre question, il se trouve qu'il est assez facile d'écrire votre propre chargeur de WAV. J'ai utilisé cet article qui décrit le format de fichier wav:

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

4

Vous ne l'avez pas mentionné le genre de licence que vous cherchez. J'ai eu d'excellents résultats avec FMOD, qui est disponible gratuitement pour les projets non commerciaux. Il joue une variété de formats, y compris ogg et mp3, et possède une API complète pour contrôler comment les jouer. C'est multi-plateforme, comme vous en avez besoin.

FMOD cible les jeux dans une large mesure; Je ne serais pas surpris si cela vient déjà avec d'excellentes fonctionnalités 3D (même si je ne sais pas à coup sûr). Comme vous pouvez le voir, je suis plutôt fan, ce qui est surtout dû au fait qu'il était étonnamment indolore d'avoir un projet C# vierge pour lire un fichier OGG pour la première fois.