使用NAudio / Lame将.wav转换为mp3时如何设置频道和采样率?

时间:2017-10-05 12:39:34

标签: 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文件的频道和采样率。请帮忙!

1 个答案:

答案 0 :(得分: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);
            }