AVPlayer,长暂停,然后是resume = glitch

时间:2013-10-11 18:10:17

标签: ios audio avfoundation avplayer

我正在使用AVPlayer来播放实时音频流。如果我暂停播放器并恢复播放,它会从中断的地方继续播放(这很棒)。除非播放器已暂停很长时间,否则它将停止从网络获取新数据。在这种情况下,当播放恢复时,它首先播放任何缓冲的数据,然后切换到实时数据。

这真烦人。听起来你只是从你离开的地方拿起但是然后,惊讶的是,你跳了起来。从听到旧的预暂停缓冲数据切换到听到新的现场音频很糟糕。

我想做的是,当暂停“很长”时,释放AVPlayer。这样,如果用户再次按下“播放”,则他们只获得新的现场音频,而不是旧的缓冲数据。我知道这意味着在播放开始之前会有延迟,但我认为这比我现在得到的音频不连续性更好。

我认为没有办法检测到这种情况。我以为我可以在当前playbackBufferFull上观察AVPlayerItem,但这似乎永远不会改变。即使仪器没有显示传入的网络流量,playbackBufferFull仍为0。

目前我只是使用了两分钟的超时,即如果播放在两分钟内没有恢复,请释放AVPlayer。如果用户稍后按下“播放”,则使用新播放器重新开始。实验上,两分钟似乎并不可怕,但实际上并不好。有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

根据我的经验,播放缓冲区总是缓冲恰好50秒的音频。你可以测量缓冲区中的秒数,以及当它达到50时(或更好,当它停止增加时),你知道是时候保释该播放器了。