2017-10-05 7 views
0

J'essaie de convertir le fichier wav en mp3 en utilisant le code suivant.Comment régler les canaux et la fréquence d'échantillonnage lors de la conversion .wav en mp3 en utilisant NAudio/Lame?

using (var wavRdr = new WaveFileReader(item)) 
       using (var mp3Writer = new LameMP3FileWriter(outputPath.Replace(".wav", ".mp3"), wavRdr.WaveFormat, _bitRate, tag)) 
       { 
        wavRdr.CopyTo(mp3Writer); 
       } 

LameMP3FileWriter n'a pas de paramètre pour définir canaux et Sample Rate pour le format MP3. Après quelques recherches, j'ai une idée que je dois définir le canal et la fréquence d'échantillonnage avant d'appeler la méthode de conversion, mais je ne sais pas comment faire.

J'ai utilisé this pour la conversion que j'ai fait avec succès, mais maintenant je dois définir les canaux et la fréquence d'échantillonnage pour le fichier mp3. S'il vous plaît aider!

Répondre

0

Ici, j'ai résolu le problème.

var tempFile = Path.Combine(destFolder, Path.GetFileNameWithoutExtension(sourceFile.SourceFilePath) + ".wav"); 
      try 
      { 
       var reader = new WaveFileReader(sourceFile.SourceFilePath); 
       var newFormat = new WaveFormat(SampleRate, BitsPerSec, Channels); 
       var conversionStream = new WaveFormatConversionStream(newFormat, reader); 
       WaveFileWriter.CreateWaveFile(tempFile, conversionStream); 

       var destFile = Path.Combine(destFolder, Path.GetFileNameWithoutExtension(sourceFile.DestiFileName) + ".mp3"); 
       using (var wavRdr = new WaveFileReader(tempFile)) 
       { 
        using (var mp3Writer = new LameMP3FileWriter(destFile, newFormat, BitRate, sourceFile)) 
        { 
         wavRdr.CopyTo(mp3Writer); 
        } 
       } 
      } 
      catch 
      { 
       //Ignore 
      } 
      finally 
      { 
       if (File.Exists(tempFile)) 
        File.Delete(tempFile); 
      }