swift AVPlayer的play调用多了久了cpu占用会越来越高
时间: 2023-09-27 15:04:41 浏览: 50
如果调用 AVPlayer 的 `play()` 方法多了久了,CPU 占用率会越来越高,可能是由于 AVPlayer 在重复播放时会重复创建子线程而导致的。
为了解决这个问题,可以使用 `seek(to:)` 方法来实现循环播放,而不是使用 `play()` 方法。具体的做法是,在播放完成时,将播放器的时间设置为 0,然后再次调用 `seek(to:)` 方法进行播放。这样就可以避免重复创建子线程,从而减少 CPU 占用率。
示例代码如下:
```swift
func playerItemDidReachEnd(notification: NSNotification) {
player.seek(to: CMTime.zero)
player.play()
}
```
另外,还可以在播放之前,先对视频文件进行优化处理,例如使用视频压缩工具对视频进行压缩,这样可以减少视频文件的大小,并且可以减少 AVPlayer 解码视频所需要的 CPU 资源。