BackgroundAudioPlayer无法开始播放

Ale*_*tov 6 c# audio-streaming mediastreamsource background-audio windows-phone-8

Windows Phone 8应用程序.我们正在使用AudioStreamingAgent/Mp3MediaStreamSource来播放可以在本地缓存或从Web加载的MP3文件.

下载文件时,我们仍然使用AudioStreamingAgent/Mp3MediaStreamSource来确保我们能够在播放当前时预先缓存下一个文件.是的,我们可以使用WP8内置播放器来缓存文件,但在这种情况下我们将无法预先缓存下一个文件.

问题:在几个曲目之后,BackgroundAudioPlayer不再开始播放了.

  1. 执行AudioStreamingAgent.OnBeginStreaming
  2. 执行创建MediaStreamSource的Сode
  3. AudioStreamer.SetSource方法使用新的MediaStreamSource实例执行
  4. PlayStateChanged在后台进程中使用PlayState.TrackReady触发,在这种情况下调用player.Play().

毕竟,我看到曲目显示在UVC中,但它处于"Paused"状态.在UVC中按"播放"会在后台调用OnUserAction调用player.Play().没有什么变化.

"卡住状态"的图片

有问题再现的样本,VS 2012(样本基于背景音频流媒体样本)

使用示例代码重现的步骤:

  1. 安装应用程序
  2. 按"预加载曲目"按钮.它将mp3文件从XAP复制到IsolatedStorage.
  3. 按"Track 1"按钮.在曲目开始播放后,按"Track 2"按钮.然后,在曲目2开始播放后,按"Track 3"按钮.
  4. 继续执行步骤3,直到按下"Track*"按钮轨道未开始播放.
  5. 最后的轨道选择将被示出为在两个UVC和上面的页上的进度条的有源轨道(参见图片)
  6. 在大多数情况下按其他轨道按钮没有任何区别.

在WP8和WP8.1开发人员预览版中,在设备和仿真器上都会重现该问题.

更新:内存不足是不是这样.使用示例代码重现问题并查看backgroundlog.xml文件显示该示例仅使用20 Mb中的6 Mb允许此图片上的最后一列是"内存使用情况|允许的最大内存使用量"

Der*_*tie 1

根据我的经验,我的建议是移植并开始使用 WPA8.1,这样播放背景音频的限制就会消失。

在为 WP 开发音乐播放器应用程序并尝试在使用 时缓存音乐时mediastreamsource,我最终得出的结论是,这可能是不可能的。在操作系统踩踏任何任务或正在完成的后台类型工作之前,您似乎有一定的时间或其他变量。

我为 MS 布道者写了这篇文章: https://drive.google.com/file/d/0By_e5C-QWr9Ka3RmbVBlWVF3R1E/edit ?usp=sharing

以下是我在尝试解决此问题时喜欢的其他一些 SO:

BackgroundAudioPlayer 正在“播放”但未调用 GetSampleAsync()

WP7背景音频资源不再可用

来自 AudioPlayerAgent 的 HttpWebRequest

AudioPlayerAgent、计时器和 Web 服务

WP7 Mp3MediaStreamSource 演示无法正常工作