首页 文章

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

提问于
浏览
0

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

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

我想做的是,当暂停是"long"时,释放 AVPlayer . 这样,如果用户再次按下"play",则他们只获得新的现场音频,而不是旧的缓冲数据 . 我知道这意味着在播放开始前会有延迟,但我认为's better than the audio discontinuity I'现在已经到了 .

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

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

1 回答

  • 0

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

相关问题