AVPlayer SET fps - PullRequest
       38

AVPlayer SET fps

0 голосов
/ 10 ноября 2019

Привет, у меня классический плеер

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

Можно ли установить FPS игрока? Например, я хочу воспроизвести видео в замедленном режиме (240 кадров в секунду) со скоростью 30 кадров в секунду

, я пытаюсь

player.play()
player.rate = 0.5

, но при этом воспроизводится только видео со скоростью 240 кадров в секунду при 120 кадрах в секунду.

Возможноизменить FPS во время воспроизведения видео

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

это прекрасно работает, но не может установить 30FPS, как указано выше

Спасибо !!

1 Ответ

1 голос
/ 10 ноября 2019

Если я правильно понимаю вопрос, вы просто хотите замедлить контент, поэтому установка скорости является правильным способом (и вы можете сделать это также во время воспроизведения контента).

Если вы хотите перейти отОт 240 до 30 кадров в секунду, что означает, что вы хотите установить скорость на 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)
...