BackgroundAudioPlayer没有开始播放

时间:2014-06-23 05:33:26

标签: c# windows-phone-8 audio-streaming background-audio mediastreamsource

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

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

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

  1. AudioStreamingAgent.OnBeginStreaming已执行
  2. 执行创建MediaStreamSource的代码
  3. 使用新的MediaStreamSource实例执行
  4. AudioStreamer.SetSource方法
  5. PlayStateChanged在后台进程中使用PlayState.TrackReady触发,在这种情况下调用player.Play()。
  6. 毕竟,我看到曲目显示在UVC中,但它处于“Paused”状态。在UVC中按“播放”会在后台调用OnUserAction调用player.Play()。什么都没有改变。

    Picture of "stuck state"

    Sample with problem reproduction, VS 2012(示例基于Background Audio Streamer Sample

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

    1. 安装应用
    2. 按“预加载曲目”按钮。它将mp3文件从XAP复制到IsolatedStorage。
    3. 按“Track 1”按钮。在曲目开始播放后,按“Track 2”按钮。然后,在曲目2开始播放后,按“Track 3”按钮。
    4. 继续执行第3步,直到按下“Track *”按钮跟踪后才开始播放。
    5. 所选的最后一首曲目将在UVC和页面上方的进度条中显示为活动曲目(请参阅picture
    6. 在大多数情况下按其他曲目按钮没有任何区别。
    7. 在WP8和WP8.1开发者预览版中,无论是在设备上还是在模拟器上都会重现该问题。

      更新:内存不足。使用sample code重新生成问题并查看backgroundlog.xml文件,显示sample uses only 6 Mb out of 20 Mb allowed此图片的最后一列是“内存使用量|允许的最大内存使用量”

1 个答案:

答案 0 :(得分:1)

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

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

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

以下是我在尝试解决此问题时所偏好的其他一些内容:

BackgroundAudioPlayer is 'Playing' but not calling GetSampleAsync()

WP7 background audio resources are no longer available

HttpWebRequest from AudioPlayerAgent

AudioPlayerAgent, timer and webservice

WP7 Mp3MediaStreamSource demo not working