2012-11-21 4 views
4

J'utilise déjà les API Media Foundation (merci à MFManagedEncode, http://blogs.msdn.com/b/mf/archive/2010/02/18/mfmanagedencode.aspx) pour convertir wav en aac. Je n'ai pas encore compris comment cela fonctionne, mais ça fonctionne - heureusement. Maintenant, je trouve difficile de transcoder l'autre sens, même s'il y a un codec MF pour cela (AAC Decoder). Je ne peux pas trouver des exemples de comment l'utiliser et je trouve la documentation MSDN pour le dire le moins cryptique; Quelqu'un at-il eu de la chance?Convert AAC en WAV

Un emballage en C# serait idéal.

TIA.

+0

trouvé quelques informations supplémentaires: http://msdn.microsoft.com/en-us/library/windows/desktop /dd757929(v=vs.85).aspx et aussi http://www.codeproject.com/Articles/459453/Code-to-stream-or-convert-MP3-WMA-to-PCM-WAV-in -Wi bien que cela concerne spécifiquement Win8. Je suis sûr que ça a du bon. – radsdau

+0

qui décode dans Win 8 lien est un bon, je l'ai porté sur C# et .NET 4 et, espérons-le, commettra bientôt les résultats dans NAudio. Je n'ai pas encore essayé avec AAC, mais cela fonctionne très bien avec MP3. J'espère aussi le combiner avec des idées de MFManagedEncode. –

+0

Lien: [Lien Convert AAC en WAV en C#] (http://www.codeproject.com/Articles/501521/Comment-convertir-entre-les-plus-audio-formats-in-NET) – Mirianashvili

Répondre

4

J'ai utilisé NAudio avec succès pour tout traitement et abstraction audio. Il est disponible en tant que NuGet. Il a encodeurs wrapper pour Media Foundation (et autres).

Voici un exemple pour l'encodage en AAC et WAV retour à l'aide NAudio:

using System; 
using NAudio.Wave; 

namespace ConsoleApplication11 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      // convert source audio to AAC 
      // create media foundation reader to read the source (can be any supported format, mp3, wav, ...) 
      using (MediaFoundationReader reader = new MediaFoundationReader(@"d:\source.mp3")) 
      { 
       MediaFoundationEncoder.EncodeToAac(reader, @"D:\test.mp4"); 
      } 

      // convert "back" to WAV 
      // create media foundation reader to read the AAC encoded file 
      using (MediaFoundationReader reader = new MediaFoundationReader(@"D:\test.mp4")) 
      // resample the file to PCM with same sample rate, channels and bits per sample 
      using (ResamplerDmoStream resampledReader = new ResamplerDmoStream(reader, 
       new WaveFormat(reader.WaveFormat.SampleRate, reader.WaveFormat.BitsPerSample, reader.WaveFormat.Channels))) 
      // create WAVe file 
      using (WaveFileWriter waveWriter = new WaveFileWriter(@"d:\test.wav", resampledReader.WaveFormat)) 
      { 
       // copy samples 
       resampledReader.CopyTo(waveWriter); 
      } 
     } 
    } 
} 
+0

N'importe quelle manière donner le MediaFoundationReader/MediaFoundationEncoder un flux pour le processus en mémoire? – IlPADlI

+0

Peut-être que cela aide pour les flux: [lien] (https://www.codeproject.com/Articles/501521/Comment-convertir-entre-les-plus-audio-formats-in-NET) – FaustsErbe