保存在 wave 中的 NAudio 文件在文件中添加了填充

问题描述

我有这样的代码

        mp3File = new Mp3FileReader("someMP3Files.mp3");
        WaveChannel32 inputStream = new WaveChannel32(mp3File);
        streamProcessor = new WaveStreamProcessor(inputStream);
        CreateWaveFile("test.wav",inputStream);

所以基本上它需要 mp3 并将其转换为名为 test.txt 的波形文件。查看转换后的文件,我看到了这个使用大胆。

注意突出显示的区域为什么它会给出空白区域并且没有完全复制?

Check the yellow section highlighted

有什么想法吗?

我的创建波浪方法

    public static void CreateWaveFile(string filename,WaveStream stream)
    {
        using (WaveFileWriter writer = new WaveFileWriter(filename,stream.WaveFormat))
        {
            byte[] buffer = new byte[stream.Length];
            while (true)
            {
                int bytesRead = stream.Read(buffer,buffer.Length);
                if (bytesRead == 0)
                    break;
                writer.WriteData(buffer,bytesRead);
            }
        }
    }

澄清一下,填充实际上是在创建 Mp3FileReader 时添加的。

解决方法

MemoryStream mp3Buffered = new MemoryStream();
using (var responseStream = resp.GetResponseStream())
{
    byte[] buffer = new byte[65536];
    int bytesRead = responseStream.Read(buffer,buffer.Length);
    while (bytesRead > 0)
    {
        mp3Buffered.Write(buffer,bytesRead);
        bytesRead = responseStream.Read(buffer,buffer.Length);
    }
}

mp3Buffered.Position = 0;
using (var mp3Stream = new Mp3FileReader(mp3Buffered))
{    
    WaveFileWriter.CreateWaveFile("file.wav",mp3Stream);
}

我不太确定你说的那个问题是什么意思,但是我尽了最大努力并进行了研究,所以这就是我发现的。而且我还认为在转换这些文件时会自动添加填充。

注意:如果我的评论有误,请不要抨击我,稍后查看我的个人资料,您就会明白为什么。 :)