【问题标题】:AVPlayer on selected rate only onceAVPlayer 仅选择一次
【发布时间】:2017-08-06 08:14:27
【问题描述】:

我遇到了 AVPlayer 的问题。案例是:我有一个函数,它设置 AVPlayer 的速率

func applyEffect(effectNumber : Int) {
    switch effectNumber {
    case 0:
        self.AvPlayer.setRate(Float(1.0), time: kCMTimeInvalid, atHostTime: kCMTimeInvalid)
    case 1:
        self.AvPlayer.setRate(Float(1.5), time: kCMTimeInvalid, atHostTime: kCMTimeInvalid)
    case 2:
        self.AvPlayer.setRate(Float(0.5), time: kCMTimeInvalid, atHostTime: kCMTimeInvalid)
    default:
        self.AvPlayer.setRate(Float(1.0), time: kCMTimeInvalid, atHostTime: kCMTimeInvalid)
    }
}

对于每个响应,我将音频文件下载到 AVPlayerItem 并将它们保存为数组。如果 AVPlayerItem.status 更改,我有一个 item 的观察者调用 applyEffect 函数,否则它立即应用效果:

if AVCurrentItem.status != AVPlayerItemStatus.readyToPlay {
                AVCurrentItem.addObserver(self, forKeyPath: "status", options: NSKeyValueObservingOptions.new, context: nil)
                pushMessageLoading()
            } else {
                self.applyEffect(effectNumber: currentEffect)
            }

override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
    if keyPath == "status" {
        popMessageLoading()
        self.applyEffect(effectNumber: currentEffect)
        AVCurrentItem.removeObserver(self, forKeyPath: "status")
    }

}

AVPlayer 属性“automaticallyWaitsToMinimizeStalling”在初始化期间设置为 false。因此,第一次以请求的速率播放音频,但之后的所有时间都以 1.0 的速率播放。有什么问题?

【问题讨论】:

    标签: ios swift avfoundation avplayer


    【解决方案1】:

    万恶之源很简单:我使用的 AVPlayer.play 等于 AVPlayer.rate = 1.0,而不是你需要使用 AVPlayer.rate = 期望值

    【讨论】:

    • 谢谢!之后我立即打电话给.play(),压倒了我的费率!
    猜你喜欢
    • 2017-04-02
    • 1970-01-01
    • 2013-08-11
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    • 1970-01-01
    相关资源
    最近更新 更多