Swift AVPlayerItem';s canPlaySlowForward属性从未调用

Swift AVPlayerItem';s canPlaySlowForward属性从未调用,swift,avplayer,tvos,avplayeritem,Swift,Avplayer,Tvos,Avplayeritem,我正在尝试为正在使用AVPlayerLayer播放的视频启用慢速播放速率。为此,文档说明,如果AVPlayerItem返回trueforcanPlaySlowForward,它将在0.0-1.0范围内启用rate。此属性是只读的,因此您需要子类化AVPlayerItem并重写此属性以完成此操作。我已经这样做了,但视频播放速度仍然不慢,始终是1.0。它甚至从不调用canPlaySlowForward属性。为什么会这样 import AVFoundation class SlowMoPlayerI

我正在尝试为正在使用
AVPlayerLayer
播放的视频启用慢速播放速率。为此,文档说明,如果
AVPlayerItem
返回
true
for
canPlaySlowForward
,它将在0.0-1.0范围内启用
rate
。此属性是只读的,因此您需要子类化
AVPlayerItem
并重写此属性以完成此操作。我已经这样做了,但视频播放速度仍然不慢,始终是1.0。它甚至从不调用
canPlaySlowForward
属性。为什么会这样

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)
}

视频文件不包括音频曲目,但这仍然需要包括。

在调用
play()
后设置
速率。无需子类化
AVPlayerItem

func playVideo() {
    let asset = AVAsset(URL: NSBundle.mainBundle().URLForResource("SampleVideo", withExtension: "mp4")!)
    let playerItem = AVPlayerItem(asset: asset)
    let player = AVPlayer(playerItem: playerItem)
    let playerLayer = AVPlayerLayer(player: player)
    playerLayer.frame = self.view.bounds
    self.view.layer.addSublayer(playerLayer)
    player.play()
    player.rate = 0.5
}