我正在将AVQueuePlayer与AVPlayerLooper配合使用来循环播放2秒的视频。这是一个风扇移动的视频(可听见视频)。我想放慢视频速度或使其更快地播放并循环播放,而两次播放之间没有任何延迟。 通常,视频播放流畅且不会延迟。但是,当我将player.rate更改为1(在我的情况下为0.5和1.5)以外的任何值时,会有明显的滞后。
func createFanPlayer(videoName: String) -> AVQueuePlayer{
let videoFormat = "mp4"
let path = Bundle.main.path(forResource: videoName, ofType: videoFormat)
let pathURL = URL(fileURLWithPath: path!)
let fanPlayer = AVQueuePlayer()
fanPlayerLayer = AVPlayerLayer(player: fanPlayer)
fanPlayerItem = AVPlayerItem(url: pathURL)
fanPlayerlayerLooper = AVPlayerLooper(player: fanPlayer, templateItem: fanPlayerItem)
fanPlayerLayer.frame = fanVideoShowView.bounds
fanPlayerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
fanVideoShowView.layer.insertSublayer(fanPlayerLayer, at: 1)
return fanPlayer
}
然后我用这段代码播放视频
func play(){
switch tapCount {
case 0:
playFanSlowSpeed()
case 1:
playFanMediumSpeed()
case 2:
playFanHighSpeed()
default:
return
}
}
用户可以多次按下按钮以将速度从“关闭”更改为“慢”到“快”。
func playFanPlayer(){
fanPlayer.play()
}
func playFanSlowSpeed(){
update()
playFanPlayer()
fanPlayer.rate = 0.6
}
func playFanMediumSpeed(){
update()
fanPlayer.rate = 1
}
func playFanHighSpeed(){
update()
fanPlayer.rate = 1.4
}