1

2 つの wav ファイルがあります。naudio と lame.exe を使用して、それらを 1 つの mp3 ファイルに変換する必要があります。wav ファイルは、 2 つの wav ファイルを混合して作成する必要があることに注意してください(連結ではありません)。

2 つの wav ファイル => 1 つの 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 ファイルを混合し、1 つの混合 wav ファイルを取得します。
  2. 次に、この wav ファイルを lame.exe を使用して mp3 ファイルに変換しています。

2 番目のステップexitCode では常に等しく1なり、エラーがあることを意味します。そのため、wav ファイル (混合) を mp3 (結果) ファイルに変換できません。

しかし、2 つの wav ファイルをそれぞれ 2 つの mp3 ファイルに変換すると、問題なく動作します。そしてexitCode 等しい0commandLineしたがって、1つの(混合)wavファイルをmp3ファイルに変換するのは間違っていると結論付けました。または、混合された wav の形式が間違っていますが、winamp で再生できるため、ほとんどの場合そうではありません。

誰か提案はありますか?

4

0 に答える 0