我有2个wav文件。它应该使用naudio和lame.exe将它们转换为一个mp3文件。请注意,wav文件应由混合 2个wav文件创建(不连接)。
两个wav文件=>一个mp3文件
private void MixWavFiles(string[] inputFiles, string outFileName)
{
int count = inputFiles.GetLength(0);
WaveMixerStream32 mixer = new WaveMixerStream32();
WaveFileReader[] reader = new WaveFileReader[count];
WaveChannel32[] channelSteam = new WaveChannel32[count];
mixer.AutoStop = true;
for (int i = 0; i < count; i++)
{
reader[i] = new WaveFileReader(inputFiles[i]);
channelSteam[i] = new WaveChannel32(reader[i]);
mixer.AddInputStream(channelSteam[i]);
}
mixer.Position = 0;
WaveFileWriter.CreateWaveFile(outFileName, mixer);
}
private string ConvertWavToMp3(string wavFileName)
{
string mp3FileName = Path.ChangeExtension(wavFileName, "mp3").Replace(Directory.GetCurrentDirectory(), "c:");
string commandLine = " -V2 " + wavFileName + " " + mp3FileName;
var lamaProcessInfo = new ProcessStartInfo();
lamaProcessInfo.Arguments = commandLine;
lamaProcessInfo.FileName = WavToMp3ConverterFileName;
lamaProcessInfo.WindowStyle = ProcessWindowStyle.Minimized;
using (var lamaProcess = Process.Start(lamaProcessInfo))
{
lamaProcess.WaitForExit();
int exitCode = lamaProcess.ExitCode;
lamaProcess.Close();
}
return mp3FileName;
}
嗯,我这就是我这样做的方式:
第二步exitCode
总是等于1
,这意味着有错误。所以我无法将wav文件(混合)转换为mp3(结果)文件。
但是,如果我将两个wav文件中的每一个转换为两个mp3文件,它工作正常! exitCode
等于0
。所以我得出结论commandLine
将一个(混合)wav文件转换为mp3文件是错误的。或者混合wav格式错误但不太可能,因为它可以由winamp播放。
有人有任何建议吗?