MediaElement 會隨機停止播放來自 MemoryStream 的音訊

本文关键字:MemoryStream 播放 MediaElement | 更新日期: 2023-09-27 18:32:19

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

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

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

MediaElement 會隨機停止播放來自 MemoryStream 的音訊

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