1
AVPlayerに問題があります。場合は、次のとおりです。私はAVPlayerItemにオーディオファイルをダウンロードし、配列として保存し、すべての応答をAVPlayerAVPlayer選択したレートで1回のみ
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.statusが変更された場合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のようなレートですべての時間後に再生されます。どうしたの?