我有 2 个 wav 文件。它应该使用 naudio 和 lame.exe 将它们转换为一个 mp3 文件。请注意,应通过混合2 个 wav 文件(而不是串联)来创建 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;
}
好吧,我就是这样做的:
- 首先,我使用 NAudio 混合 2 个 wav 文件并获得一个混合 wav 文件。
- 然后我使用 lame.exe 将此 wav 文件转换为 mp3 文件。
在第二步exitCode
总是等于1
,这意味着有一个错误。所以我无法将 wav 文件(混合)转换为 mp3(结果)文件。
但是,如果我将两个 wav 文件中的每一个转换为两个 mp3 文件,它就可以正常工作!和exitCode
等于0
。所以我有一个结论commandLine
,将一个(混合)wav 文件转换为 mp3 文件是错误的。或者混合 wav 格式错误,但不太可能,因为它可以由 winamp 播放。
有没有人有什么建议?