2017-08-06 2 views
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のようなレートですべての時間後に再生されます。どうしたの?

答えて

0

悪の根は単純です:私はあなたがAVPlayer.rate = 希望の値を使用する必要がありますこれに代えて、AVPlayer.rate = 1.0に等しいAVPlayer.play使用してきました

関連する問題