AVPlayer相关BUG记录

Bug:音频列表顺序播放过程中偶尔出现设置的1.5倍速重置为1

原因:音频流卡顿暂停并缓冲到了足够可以继续播放的buffer长度后响应playbackLikelyToKeepUp 事件中 手动调用了 player.play() 方法播放音频

1
2
3
4
5
6
7
8
if keyPath == "currentItem.playbackLikelyToKeepUp" {
if let item = currentItem, item.isPlaybackLikelyToKeepUp, playStatus == .loading, isPlayerActive {
playStatus = .playing
player.play()
// 播放之后需增加设置rate的步骤
rate = CGFloat(UserDefaultManager.manager.getAudioRateValue())
}
}

查看文档可以看到play方法等同于 player.rate = 1,故而导致音频的速率变成了1

1
2
3
4
5
6
/*!
@method play
@abstract Signals the desire to begin playback at the current item's natural rate.
@discussion Equivalent to setting the value of rate to 1.0.
*/
- (void)play;

总结:api的使用还是需要多看文档不要仅仅看名字就想当然(play = 以当前速率进行继续播放),简单的api名称并不代表着简单的功能!


AVPlayer相关BUG记录
https://zcx.info/2021/08/25/AVPlayer相关BUG记录/
作者
zcx
发布于
2021年8月25日
许可协议