Я пытаюсь включить медленную скорость воспроизведения для видео, которое я играю, используя AVPlayerLayer
. Для этого в документации указано, что она будет включать rate
в диапазоне от 0,0 до 1,0, если AVPlayerItem
возвращает true
для canPlaySlowForward
. Это свойство доступно только для чтения, поэтому для этого необходимо подклассу AVPlayerItem
и переопределить это свойство. Я сделал это, но видео по-прежнему не играет медленными темпами, это всегда скорость 1.0. Он даже не называет свойство canPlaySlowForward
. Почему это?Свойство canPlaySlowForward AVPlayerItem никогда не называлось
import AVFoundation
class SlowMoPlayerItem: AVPlayerItem {
override var canPlaySlowForward: Bool {
return true
}
}
Воспроизведение видео:
let asset = AVAsset(URL: NSBundle.mainBundle().URLForResource("some-video", withExtension: "mp4")!)
let playerItem = SlowMoPlayerItem(asset: asset)
let player = AVPlayer(playerItem: playerItem)
player.rate = 0.5
player.muted = true
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.view.layer.bounds
self.view.layer.addSublayer(playerLayer)
player.play()
Единственное, что я связан с видео/аудио предотвратить его остановки фоновый звук через:
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient)
}
Видеофайл делает не включать звуковую дорожку, но это все еще необходимо включить.