1

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

好吧,我就是这样做的:

  1. 首先,我使用 NAudio 混合 2 个 wav 文件并获得一个混合 wav 文件。
  2. 然后我使用 lame.exe 将此 wav 文件转换为 mp3 文件。

在第二步exitCode 总是等于1,这意味着有一个错误。所以我无法将 wav 文件(混合)转换为 mp3(结果)文件。

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

有没有人有什么建议?

4

0 回答 0