在我的 Silverlight 应用程序中,我使用 ZipInputStream 从文件中读取音频数据,然后将其存储在 MemoryStream 中。这是我正在使用的代码:
byte[] buf = new byte[1024];
MemoryStream memoryStream = new MemoryStream();
int len;
while ((len = zipInputStream.Read(buffer, 0, buffer.Length)) > 0)
{
memoryStream.Write(buf, 0, len);
}
// Reset the position for reading.
memoryStream.Position = 0;
// Check how large the byte[] is.
textBox.Text = memoryStream.ToArray().Length.ToString();
MediaElement me = new MediaElement();
me.setSource(memoryStream);
me.Play();
该代码部分有效;输入文件中的歌曲开始播放。此外,对于同一首歌曲,byte[] 始终具有相同的长度。我认为这意味着这首歌每次都被完整地阅读。
但是,我的问题是音频在每次运行的不同点随机停止播放。这首歌也还没有完全播放。我不确定为什么会发生这种情况。
如果有人知道,我想知道为什么会这样。我还想知道我的代码是否有问题,或者我应该以不同的方式存储音频(不涉及在用户计算机上存储文件)。