[AVPlayer SET fps

问题描述 投票:0回答:1

嗨,我是经典玩家

var player = AVPlayer(url: fileUrl)
player.play() 

可以设置播放器的FPS吗?例如,我想以30fps的速度播放慢动作视频(240fps)

我尝试

player.play()
player.rate = 0.5

但是只能以120fps播放240fps的视频。

可以在视频播放期间更改FPS

let timer = Timer.scheduledTimer(withTimeInterval: 1, repeats: false) {_ in
        player.rate = 0.5
}

这很好用,但不能像上面那样设置30FPS

谢谢!

ios video avplayer frame-rate swift5
1个回答
1
投票

如果我对问题的理解正确,您只想放慢内容的速度,那么设置速率是正确的方法(并且您也可以在内容播放期间执行此操作。

如果要从240 fps增至30 fps,则表示您要将速率设置为30/240,即1/8。

因此,应该这样做:

player.rate = Float(1)/Float(8)

您还应该将playerItem audioPitchAlgorithm设置为lowQualityZeroLatency以外的值,以使其可以从0.5降低到1/32

lowQualityZeroLatency

此算法适用于短暂的快进和倒带效果以及低质量的声音。该比率被锁定为{0.5,0.666667,0.8,1.0,1.25,1.5,2.0}。

我经过正确测试的片段已达到速度的1/8。

let playerItem = AVPlayerItem(url: URL(string:"https://devstreaming-cdn.apple.com/videos/streaming/examples/img_bipbop_adv_example_ts/master.m3u8")!)
playerItem.audioTimePitchAlgorithm = .varispeed
let avPlayer = AVPlayer(playerItem: playerItem)

let vc = AVPlayerViewController()
vc.player = avPlayer

avPlayer.rate = 0.125
self.present(vc, animated: true)
© www.soinside.com 2019 - 2024. All rights reserved.