为什么NA​​udio创建的WAV文件的大小是原本的两倍?

时间:2019-05-15 15:13:29

标签: naudio

我正在使用此相当标准的代码示例将多个WAV文件混合到一个输出文件中(为清楚起见,省略了调用):

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,但输出文件的大小始终是输入文件的两倍。

我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

感谢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调用。确保添加这些以防止资源泄漏。