如何快速快速地以可变速度(慢/快)播放循环播放的视频

时间:2020-08-27 06:36:15

标签: swift avqueueplayer avplayerlooper

我正在将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
    }

0 个答案:

没有答案