c# Naudio MemoryStream 异常不可读

本文关键字:异常 Naudio MemoryStream | 更新日期: 2023-09-27 17:56:10

我正在使用Naudio。我正在尝试将.mp3流写入.wav流。这是我的代码:

        MemoryStream outputStream = new MemoryStream();                
        WaveStream waveStream = WaveFormatConversionStream.CreatePcmStream(new Mp3FileReader(@"C:'Users'practice'Desktop'ORIG FILE.mp3"));            
        using (WaveFileWriter waveFileWriter = new WaveFileWriter(outputStream, waveStream.WaveFormat))
        {
            byte[] bytes = new byte[waveStream.Length];
            waveStream.Position = 0;
            waveStream.Read(bytes, 0, (int)waveStream.Length);
            waveFileWriter.Write(bytes, 0, bytes.Length);
            waveFileWriter.Flush();
        }
        using(WaveFileReader reader = new WaveFileReader(outputStream))
        {
        }
        waveStream.Close();
        outputStream.Close();

我在第二个使用块中有一个异常:Stream was not readable. 我该如何解决它?

c# Naudio MemoryStream 异常不可读

当你的 using 语句完成时,一次性被丢弃。

您可以组合

        using (MemoryStream outputStream = new MemoryStream())
        using (WaveStream waveStream = WaveFormatConversionStream.CreatePcmStream(new Mp3FileReader(@"D:'recit.mp3")))
        using (WaveFileWriter waveFileWriter = new WaveFileWriter(outputStream, waveStream.WaveFormat))
        {
            byte[] bytes = new byte[waveStream.Length];
            waveStream.Position = 0;
            waveStream.Read(bytes, 0, (int)waveStream.Length);
            waveFileWriter.Write(bytes, 0, bytes.Length);
            waveFileWriter.Flush();
            outputStream.Position = 0;
            using (WaveFileReader reader = new WaveFileReader(outputStream))
            {}
        }
    }

或将其转换为 try-catch-final,您可以在其中手动处理流