AVPlayer+循环+背景



我需要:

  • 播放声音
  • 环路
  • 继续在后台播放

AVAudioPlayer的所有功能都很好,但现在我必须使用AVPlayer来播放iPod库中的音乐歌曲。但有一个大问题:AVPlayer没有像AVAudioPlayer中那样的numberOfLoops属性。

好的,您可以为AVPlayerItemDidPlayToEndTimeNotificationNSNotificationCenter注册通知(也可以使用指定时间等于歌曲持续时间的addBoundaryTimeObserverForTimes方法),以便在歌曲播放到最后时收到通知。但只有当应用程序在前台,在后台歌曲继续播放,但在结尾停止时,这才有效。

通知也在后台接收(使用NSLog进行检查),但选择器的代码:

AVPlayerItem *playerItem = [notification object];  
[playerItem seekToTime:kCMTimeZero];

没有效果,歌曲没有循环。

有什么建议吗?

你遇到的问题是,当玩家进行搜索时,你的应用程序看起来已经播放完音频,所以它被扔到了篝火上。:)

我花了几天时间创建了这个变通方法:

  1. 将"应用程序播放音频"添加到info.plist 中的"所需背景模式"

  2. 创建另一个AVplayer,以0.00000001f的速率播放一秒钟的mp3文件(silentMp3Player.rate=0.0000001f),当您的应用程序进入后台时启动,当它重新进入前台时停止。

尝试添加以下代码:

try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback)
try AVAudioSession.sharedInstance().setActive(true)

最新更新