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;
}
さて、私のこれは私がやっている方法です:
- まず、NAudio を使用して 2 つの wav ファイルを混合し、1 つの混合 wav ファイルを取得します。
- 次に、この wav ファイルを lame.exe を使用して mp3 ファイルに変換しています。
2 番目のステップexitCode
では常に等しく1
なり、エラーがあることを意味します。そのため、wav ファイル (混合) を mp3 (結果) ファイルに変換できません。
しかし、2 つの wav ファイルをそれぞれ 2 つの mp3 ファイルに変換すると、問題なく動作します。そしてexitCode
等しい0
。commandLine
したがって、1つの(混合)wavファイルをmp3ファイルに変換するのは間違っていると結論付けました。または、混合された wav の形式が間違っていますが、winamp で再生できるため、ほとんどの場合そうではありません。
誰か提案はありますか?