我'm trying to enable slow playback rate for a video I'正在玩 AVPlayerLayer
. 为此,文档说明如果 AVPlayerItem
为 canPlaySlowForward
返回 true
,它将在0.0 - 1.0的范围内启用 rate
. 此属性是只读的,因此您需要子类 AVPlayerItem
并覆盖此属性才能完成此操作 . 我've done that, but the video still does not playing at a slow rate, it'总是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)
}
视频文件不包含音轨,但仍需要包括 .
1 回答
调用
play()
后设置rate
. 无需子类AVPlayerItem
.