NAudio中的WaveStream到字节数组?
Posted
技术标签:
【中文标题】NAudio中的WaveStream到字节数组?【英文标题】:WaveStream to Byte Array in NAudio? 【发布时间】:2013-01-23 14:03:36 【问题描述】:如何使用 NAudio 将 WaveStream 转换为字节数组?
【问题讨论】:
How to write NAudio WaveStream to a Memory Stream? 的可能重复项 【参考方案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();
【讨论】:
这是正确的方法,但缓冲区大小应可配置为 WaveStream 的块对齐的精确倍数。通常,一次播放一到两秒的音频就很适合阅读了。 visual studio 说不需要在声明时分配给int reader
【参考方案2】:
你可以试试这个愿景,应该适合你,试试吧
MemoryStream memoryStr = new MemoryStream();
while ((read = stream.Read(buffer, 0, buffer.Length)) != 0)
memoryStr.Write(buffer, 0, read );
【讨论】:
【参考方案3】:您可以像使用 System.IO.Stream
一样使用它。
使用读取方法。但要记住。如果您将整个流转换为一个 Bytearray
,它可能会导致 OutOfMemoryException
。这取决于流有多大。但是你可以使用这样的东西:
byte[] buffer = new byte[stream.Length];
int read = stream.Read(buffer, 0, buffer.Length);
【讨论】:
以上是关于NAudio中的WaveStream到字节数组?的主要内容,如果未能解决你的问题,请参考以下文章
从 WaveStream 将 2 通道样本读入数组的最简单方法
记录来自 NAudio WaveIn 的输入,并将输出保存到字节数组