6

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

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

问题:几首曲目后,BackgroundAudioPlayer 不再开始播放。

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

毕竟,我看到轨道显示在 UVC 中,但它处于“暂停”状态。在 UVC 中按下“播放”会在调用 player.Play() 的后台调用 OnUserAction。没有什么变化。

“卡住状态”图片

问题重现示例,VS 2012(示例基于Background Audio Streamer Sample

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

  1. 安装软件
  2. 按下“预加载曲目”按钮。它将 mp3 文件从 XAP 复制到 IsolatedStorage。
  3. 按“轨道 1”按钮。曲目开始播放后,按“曲目 2”按钮。然后,在曲目 2 开始播放后,按“曲目 3”按钮。
  4. 继续执行第 3 步,直到按下“Track *”按钮后曲目没有开始播放。
  5. 最后选择的曲目将在 UVC 和页面进度条上方显示为活动曲目(见图
  6. 在大多数情况下按下其他轨道按钮没有任何区别。

该问题在 WP8 和 WP8.1 开发人员预览版上都在设备和模拟器上重现。

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

4

1 回答 1

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、定时器和网络服务

WP7 Mp3MediaStreamSource 演示不工作

于 2014-07-02T15:29:03.457 回答