为什么 NAudio 创建的 WAV 文件大小是应有的两倍?
Why is NAudio creating a WAV file that's twice the size it should be?
我正在使用这个相当标准的代码示例将多个 WAV 文件混合到一个输出文件中(为清楚起见省略了 Dispose 调用):
public static void MixAudioFiles(IEnumerable<FileObject> input, FileObject output)
{
var mixer = new WaveMixerStream32 { AutoStop = true };
foreach (var file in input)
{
var reader = new WaveFileReader(file.FullName);
mixer.AddInputStream(new WaveChannel32(reader));
}
WaveFileWriter.CreateWaveFile(output.FullName, new Wave32To16Stream(mixer));
}
但是输出文件总是输入文件大小的两倍,尽管使用了 Wave32To16Stream
。
我在这里错过了什么?
谢谢,Mark,这为我指明了正确的方向。对于遇到此问题的任何其他人,这里是工作代码:
public static void MixAudioFiles(IEnumerable<string> input, string output)
{
var wf = new WaveFormat(16000, 1);
var mixer = new NAudio.Wave.SampleProviders.MixingSampleProvider(WaveFormat.CreateIeeeFloatWaveFormat(wf.SampleRate, wf.Channels));
foreach (var file in input)
{
var reader = new WaveFileReader(file);
mixer.AddMixerInput(reader);
}
//write the mix file
WaveFileWriter.CreateWaveFile16(output, mixer);
}
请注意,我省略了 Dispose
调用。确保添加这些以防止资源泄漏。
我正在使用这个相当标准的代码示例将多个 WAV 文件混合到一个输出文件中(为清楚起见省略了 Dispose 调用):
public static void MixAudioFiles(IEnumerable<FileObject> input, FileObject output)
{
var mixer = new WaveMixerStream32 { AutoStop = true };
foreach (var file in input)
{
var reader = new WaveFileReader(file.FullName);
mixer.AddInputStream(new WaveChannel32(reader));
}
WaveFileWriter.CreateWaveFile(output.FullName, new Wave32To16Stream(mixer));
}
但是输出文件总是输入文件大小的两倍,尽管使用了 Wave32To16Stream
。
我在这里错过了什么?
谢谢,Mark,这为我指明了正确的方向。对于遇到此问题的任何其他人,这里是工作代码:
public static void MixAudioFiles(IEnumerable<string> input, string output)
{
var wf = new WaveFormat(16000, 1);
var mixer = new NAudio.Wave.SampleProviders.MixingSampleProvider(WaveFormat.CreateIeeeFloatWaveFormat(wf.SampleRate, wf.Channels));
foreach (var file in input)
{
var reader = new WaveFileReader(file);
mixer.AddMixerInput(reader);
}
//write the mix file
WaveFileWriter.CreateWaveFile16(output, mixer);
}
请注意,我省略了 Dispose
调用。确保添加这些以防止资源泄漏。