首页 > 解决方案 > 包装 MemoryStream

问题描述

https://stackoverflow.com/questions/39328396/prepend-wav-header-in-naudio# = Mark Heath 说:“您可以使用 WaveFileWriter 写入流。所以在这种情况下,我会写入 MemoryStream , 并且 WaveFileWriter 必须被释放才能正确地完成 WAV 标头。但是你将拥有一个 WAV 文件的内存表示。

需要注意的是,当你处理 WaveFileWriter 时,你最终可能会处理 MemoryStream,所以我在 NAudio 中有一个名为 IgnoreDisposeStream 的便利类,你可以将 MemoryStream 包装进去,以阻止它在使用之前被处理掉。”

如何在 C# 中包装内存流?

标签: c#naudio

解决方案


 public static void ConvertMemoryStreamToWavFile(ref MemoryStream ids, ref 
 MemoryStream ms)
    {
        ids.Seek(0, SeekOrigin.Begin);


        using (var writer = new WaveFileWriter(new IgnoreDisposeStream(ms), new WaveFormat(22000, 16, 1)))
        {

            ids.CopyTo(writer);
            writer.Flush();
            writer.Close();
            writer.Dispose();

        }


    }

推荐阅读