2013-01-23 20 views
1

如何使用NAudio将WaveStream转换为字节数组?NAudio中的WaveStream到Byte数组?

+0

可能重复[如何n音讯的WaveStream写入内存流?](http://stackoverflow.com/questions/11500222/how-to-write-naudio-wavestream-to-a-memory-stream) –

回答

0

您使用它像一个System.IO.Stream。 使用读取方法。但要记住。如果您将整个流转换为一个Bytearray它可能会导致和OutOfMemoryException。这取决于流的大小。但是,你可以使用这样的事情:

byte[] buffer = new byte[stream.Length]; 
int read = stream.Read(buffer, 0, buffer.Length); 
1
public static class StreamExtension 
{ 
    public static byte[] ToArray(this Stream stream) 
    { 
     byte[] buffer = new byte[4096]; 
     int reader = 0; 
     MemoryStream memoryStream = new MemoryStream(); 
     while ((reader = stream.Read(buffer, 0, buffer.Length)) != 0) 
      memoryStream.Write(buffer, 0, reader); 
     return memoryStream.ToArray(); 
    } 
} 
+0

这是正确的方法,但缓冲区大小应该可配置为精确的WaveStream块对齐的倍数。通常一次或两秒钟的音频大小可以阅读。 –

1

你可以试试这个愿景,应为你工作,尝试

MemoryStream memoryStr = new MemoryStream(); 
      while ((read = stream.Read(buffer, 0, buffer.Length)) != 0) 
       memoryStr.Write(buffer, 0, read);