将wav文件混合并转换为一个mp3文件

时间:2012-04-17 07:44:15

标签: c# naudio lame

我有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;
        }

嗯,我这就是我这样做的方式:

  1. 首先,我使用NAudio混合2个wav文件并获得一个混合wav 文件。
  2. 然后我使用lame.exe将此wav文件转换为mp3文件。
  3. 第二步exitCode总是等于1,这意味着有错误。所以我无法将wav文件(混合)转换为mp3(结果)文件。

    但是,如果我将两个wav文件中的每一个转换为两个mp3文件,它工作正常! exitCode等于0。所以我得出结论commandLine将一个(混合)wav文件转换为mp3文件是错误的。或者混合wav格式错误但不太可能,因为它可以由winamp播放。

    有人有任何建议吗?

0 个答案:

没有答案