使用NAudio/Lame将.wav转mp3时如何设置通道和采样率?
How to set channels and sample rate when converting .wav into mp3 using 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 格式设置 Channels 和 Sample Rate。
经过一些研究,我有一个想法,我必须在调用转换方法之前设置通道和采样率,但我不知道该怎么做。
我使用 this 进行转换,我已经成功完成了,但现在我需要为 mp3 文件设置通道和采样率。请帮忙!
到这里我已经解决了这个问题。
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);
}
我正在尝试使用以下代码将 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 格式设置 Channels 和 Sample Rate。
经过一些研究,我有一个想法,我必须在调用转换方法之前设置通道和采样率,但我不知道该怎么做。
我使用 this 进行转换,我已经成功完成了,但现在我需要为 mp3 文件设置通道和采样率。请帮忙!
到这里我已经解决了这个问题。
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);
}