AVPlayer + 循环 + 背景

Posted

技术标签:

【中文标题】AVPlayer + 循环 + 背景【英文标题】:AVPlayer + loop + background 【发布时间】:2011-06-20 22:47:34 【问题描述】:

我需要:

播放声音 循环 继续在后台播放

AVAudioPlayer 一切正常,但现在我必须使用AVPlayer 来播放 iPod 库中的音乐歌曲。但是有一个大问题:AVPlayer 没有numberOfLoops 中的AVAudioPlayer 属性。

好的,你可以为AVPlayerItemDidPlayToEndTimeNotification注册一个通知到NSNotificationCenter(或者你也可以使用addBoundaryTimeObserverForTimes方法,指定时间等于歌曲时长)当歌曲播放到结束时得到通知. 但这只有在应用程序在前台时才有效,在后台歌曲继续播放,但在结束时停止。

通知也在后台收到(通过 NSLog 检查),但是选择器的代码:

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

...没有效果,歌曲不循环播放。

有什么建议吗?

【问题讨论】:

【参考方案1】:

您遇到的问题是播放器执行搜索的第二秒,您的应用看起来好像已完成播放音频,因此它被扔到了篝火上。 :)

我花了几天时间创建这个解决方法:

    在 info.plist 中将“应用播放音频”添加到“必需的后台模式”

    创建另一个以 0.00000001f 速率 (silentMp3Player.rate=0.0000001f) 播放一秒 mp3 文件的 AVplayer,该文件在您的应用进入后台时开始,在重新进入前台时停止。

    李>

【讨论】:

更正,即使 AVPlayer 支持,您也无法以 0.0000001f 速率播放音频文件。它似乎只下降到 0.001f 左右,因此您需要更长的静音 mp3 才能获得更长的停顿。【参考方案2】:

尝试添加此代码:

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

【讨论】:

以上是关于AVPlayer + 循环 + 背景的主要内容,如果未能解决你的问题,请参考以下文章

防止 AVPlayer 取消背景音频

AVPlayer 和背景音频流

防止无音频 AVPlayer 暂停背景音频

iOS,AVPlayer - 循环播放 MP3 片段

同时播放两个 AVPlayer 音频文件时出现音频故障

Xcode swift - 背景模式 - 锁定时AVPlayer中的音频