Почему NAudio создает файл WAV, который в два раза больше, чем должен быть? - PullRequest
0 голосов
/ 15 мая 2019

Я использую этот довольно стандартный пример кода, чтобы смешать несколько файлов 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.

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 29 мая 2019

Спасибо, Марк , который указал мне правильное направление.Для всех, у кого есть эта проблема, вот рабочий код:

    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.Обязательно добавьте их, чтобы предотвратить утечку ресурсов.

...