2017-10-05 160 views
0

我想使用以下代码将wav文件转换为mp3。如何使用NAudio/Lame将.wav转换为mp3时设置通道和采样率?

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

LameMP3FileWriter没有任何参数设置通道和MP3格式采样率

经过一番研究,我有一个想法,我必须在调用转换方法之前设置通道和采样率,但我不知道如何去做。

我使用this进行转换,我已经成功完成了,但现在我需要为mp3文件设置通道和采样率。请帮忙!

回答

0

这里我已经解决了这个问题。

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); 
      }