2008-09-15 12 views
6

Quelle est la meilleure solution pour convertir des fichiers WAV en WMA (et vice versa) en C#? Je l'ai implémenté une fois déjà en utilisant le Windows Media Encoder SDK, mais avoir à distribuer Windows Media Encoder avec mon application est lourd pour le moins. Le SDK Windows Media Format comporte de larges sections de l'API marquées comme obsolètes. Il semble qu'il pourrait y avoir des objets DX (DirectX Media Objects) que je pourrais utiliser à partir du SDK de Windows, mais il y aurait énormément d'interopérabilité à écrire.Convertir WAV en WMA en utilisant .NET

Je me demande s'il y a peut-être un bon gestionnaire géré pour une bibliothèque non gérée qui peut effectuer les conversions. Il aurait besoin d'une licence lui permettant d'être distribué dans le cadre d'une application commerciale à source fermée.

+0

Avez-vous des exemples de conversion d'un wma en wav? Tous les échantillons que j'ai vus ont été seulement WAV à WMA –

Répondre

1

Je ne l'ai pas essayé personnellement (donc pas sûr que ce soit la « meilleure » solution), mais http://www.codeproject.com/KB/audio-video/WmaCompressor.aspx semble que cela devrait répondre à vos besoins ...

+0

oui, je pense que c'est la solution la plus prometteuse disponible pour le moment. Le même auteur a également fait un port C# du Windows Media Format SDK. Ma seule préoccupation est qu'il est très difficile de savoir si le code peut être utilisé dans un projet commercial. –

1

Vous pouvez jeter un oeil à la BASS library. Il a des add-ons, tels que BASSWMA et BASSEnc pour faire l'encodage/décodage. Toutes ses API sont accessibles à partir de .NET en utilisant le wrapper BASS.Net.

Les deux BASS et BASS.Net pourraient être autorisés pour un usage commercial, avec des frais raisonnables (100 € chacun).

1

Si vous êtes à l'aise pour écrire un peu de C++/CLI, vous n'avez pas besoin de beaucoup de code pour créer un wrapper autour de DirectShow pour cela. Cela peut ensuite être appelé directement à partir d'un assemblage C# sans avoir besoin de déranger avec interop. Le faire avec DirectShow est beaucoup plus facile que d'utiliser WMF directement parce que vous n'avez pas à faire d'analyse de fichiers ou d'E/S - tout est fait pour vous. Pour référence, j'ai du code dans une application commerciale qui peut encoder/décoder WMA vers/à partir de fichiers WAV en moins de 100 lignes de C++, le tout enveloppé dans une classe .Net amicale. L'utilisation judicieuse de pointeurs intelligents aide si vous suivez cette route ...

0

Vous pouvez regarder www.mitov.com. Il y a quelques bibliothèques qui peuvent aider. Vous devrez acheter une copie pour l'expédition dans un produit commercial, je crois, mais je pense que c'est un prix raisonnable.

1

Tout d'abord, regardez ceci:

http://windowsmedianet.sourceforge.net/

Ensuite, la recherche de IWMWritter - et différentes façons d'initialiser. Vous allez fournir des données PCM brutes, et il écrira le fichier wma.

Marquer ma réponse pour plus d'informations.