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
forcanPlaySlowForward
,它将在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
}