Как плавно воспроизводить зацикленное видео с переменной скоростью (медленно / быстро) в Swift
Я использую 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
}