gpt4 book ai didi

c# - 在 memoryStream 之后处理 writer

转载 作者:太空宇宙 更新时间:2023-11-03 21:20:39 24 4
gpt4 key购买 nike

这是我的一段代码:

private static MemoryStream outputStream;


public static void ConvertMp3ToWavStream(string inputPath)
{
outputStream = new MemoryStream();
using (Mp3FileReader reader = new Mp3FileReader(inputPath))
{
using (WaveStream waveStream = WaveFormatConversionStream.CreatePcmStream(reader))
{
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();
}
}
}

这是我的 CloseAndDispose 方法,我在一些操作后调用它:

private static void CloseAndDispose()
{
if (outputStream != null)
{
outputStream.Close();
outputStream.Dispose();
}
}

问题:在所有操作之后,我在内存堆栈中得到了一些内存,这些内存没有被释放。据我所知,这是我的 writer。当我尝试处理 writer 时,出现异常。 (无法读取 MemoryStream)。当我尝试在 CloseAndDispose() 方法之后关闭和处置 writer 时,出现异常。我应该在哪里关闭 waveFileWriter

最佳答案

NAudio 在 NAudio.Utils 命名空间中有一个名为 IgnoreDisposeStream 的辅助类。在将内存流传递到 WaveFileWriter

之前,将您的内存流包装在其中一个中
using (var writer = new WaveFileWriter(new IgnoreDisposeStream(outputStream),
waveStream.WaveFormat))
{
...
}

关于c# - 在 memoryStream 之后处理 writer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31023547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com