嗨,我是经典玩家
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
谢谢!
如果我对问题的理解正确,您只想放慢内容的速度,那么设置速率是正确的方法(并且您也可以在内容播放期间执行此操作。
如果要从240 fps增至30 fps,则表示您要将速率设置为30/240,即1/8。
因此,应该这样做:
player.rate = Float(1)/Float(8)
您还应该将playerItem audioPitchAlgorithm设置为lowQualityZeroLatency
以外的值,以使其可以从0.5降低到1/32
此算法适用于短暂的快进和倒带效果以及低质量的声音。该比率被锁定为{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)