AVPlayer SET fps
Posted
技术标签:
【中文标题】AVPlayer SET fps【英文标题】: 【发布时间】:2019-11-10 10:40:06 【问题描述】:你好,我有一个经典的播放器
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
谢谢!!
【问题讨论】:
【参考方案1】:如果我正确理解了这个问题,您只是想放慢内容,因此设置速率是正确的方法(您也可以在内容播放期间这样做)。
如果你想从 240 到 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)
【讨论】:
不起作用。如果你有一个 3 秒 240fps 的视频, player.rate = Float(1)/Float(8) 你有 6 秒。我认为 3 秒 240fps 视频等于 21 秒 30 fps 视频 @StefanoVet 你说得对,我忘记了一条信息。我编辑了缺少那块的答案。 完美!真的谢谢!以上是关于AVPlayer SET fps的主要内容,如果未能解决你的问题,请参考以下文章