包装一个MemoryStream

时间:2018-11-20 10:48:26

标签: c# naudio

https://stackoverflow.com/questions/39328396/prepend-wav-header-in-naudio#= 马克·希思(Mark Heath)说: “您可以使用WaveFileWriter写入Stream。因此,在这种情况下,我将写入MemoryStream,然后处置WaveFileWritermust以正确完成WAV标头。但是,您将在内存中表示一个WAV文件。

一个警告是,您可能在处置WaveFileWriter时最终处置了MemoryStream,因此我在NAudio中有一个方便的类,称为IgnoreDisposeStream。您可以将其包装在其中,以阻止它在使用前被处置。” < / p>

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

1 个答案:

答案 0 :(得分:0)

 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();

        }


    }