NAudio转换工件

时间:2015-11-20 22:15:08

标签: c# naudio

我正在捕获IEEE,48khz,32位音频,并尝试将其转换为PCM,44.1khz,16位音频。我在PCM编码结果中每秒听到很多次小声音。

我已经收听了原始音频(48khz格式)的播放。它没有文物,听起来不错。

离开重新取样。有人能告诉我我在这里做错了什么吗?

这是我的转换代码:

    byte[] buffer = new byte[1024 * 10];

    //wave format is IEEE 48khz, 32 bit
    public byte[] Convert(byte[] input, int length, WaveFormat format)
    {
        if (length == 0)
            return new byte[0];

        using (var memStream = new MemoryStream(input, 0, length))
        {
            using (var inputStream = new RawSourceWaveStream(memStream, format))
            {
                //convert bytes to floats for operations.
                WaveToSampleProvider sampleStream = new WaveToSampleProvider(inputStream);

                //resample to 44.1khz
                var resamplingProvider = new WdlResamplingSampleProvider(sampleStream, 44100);

                //convert float stream to PCM 16 bit.
                var ieeeToPCM = new SampleToWaveProvider16(resamplingProvider);
                return readStream(ieeeToPCM);
            }
        }
    }

    private byte[] readStream(IWaveProvider waveStream)
    {
        using (var stream = new MemoryStream())
        {
            int read;
            while ((read = waveStream.Read(buffer, 0, buffer.Length)) > 0)
            {
                stream.Write(buffer, 0, read);
            }
            return stream.ToArray();
        }
    }

0 个答案:

没有答案