0

在我的 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[] 始终具有相同的长度。我认为这意味着这首歌每次都被完整地阅读。

但是,我的问题是音频在每次运行的不同点随机停止播放。这首歌也还没有完全播放。我不确定为什么会发生这种情况。

如果有人知道,我想知道为什么会这样。我还想知道我的代码是否有问题,或者我应该以不同的方式存储音频(不涉及在用户计算机上存储文件)。

4

1 回答 1

0

我终于能够找到解决方案。通过制作 MediaElement 和 MemoryStream 全局变量,歌曲每次播放完。我仍然不能 100% 确定是什么导致了这个错误,尽管我最好的猜测是这个问题是由垃圾收集器删除流引起的。

于 2013-09-23T22:18:49.647 回答