【发布时间】:2019-05-15 15:13:29
【问题描述】:
我正在使用这个相当标准的代码示例将多个 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。
我在这里错过了什么?
【问题讨论】:
-
您可能要从单声道转为立体声?
-
完全有可能,但我不知道怎么做。默认情况下,此链中的
WaveXXX对象之一是否具有该效果? -
@MarkHeath:似乎问题在于混合文件有2个通道,但输入文件只有1个。我认为这是因为
WaveMixerStream32使用了WaveFormat有2个通道,但我看不到任何方法可以创建仅使用 1 个通道的混音器。 -
看看
MixingSampleProvider-WaveMixerStream32和WaveChannel32是非常古老的类,最好不要再使用了
标签: naudio