imkanı size .readToPlay
s mülkiyet status
değişikliklere 'AVPlayerItem
önce lar canPlayReverse
veya canPlayFastForward
' AVPlayerItem
kontrol ediyoruz olduğunu. Bunu yapıyorsanız, her zaman false
'u alacaksınız.
böyle yapamaz Do:
import AVFoundation
let anAsset = AVAsset(URL: <#A URL#>)
let playerItem = AVPlayerItem(asset: anAsset)
let canPlayFastForward = playerItem.canPlayFastForward
if (canPlayFastForward){
print("This line won't execute")
}
yerine AVPlayerItem
'ın mülkü status
gözlemleyin. Aşağıdakiler,
AVPlayerItem nesneleri dinamiktir. AVPlayerItem.canPlayFastForward değeri, tüm dosya tabanlı varlıkları ve bazı akışa dayalı varlıklar için (kaynak çalma listesi, oynatmaya hazır olduğunda ortam sağlarsa) EVET olarak değişir. Oyuncu öğesi oynatmaya hazır olduğunda bildirim almak için yolu, AVPlayerItem.status özelliğini (KVO) Anahtar Değer Gözlemleme yoluyla gözlemleyerek 'dır. aynı sınıfta observeValue
yönteme Ovveride
import AVFoundation
dynamic var songItem:AVPlayerItem! //Make it instance variable
let anAsset = AVAsset(URL: <#A URL#>)
let songItem = AVPlayerItem(asset: anAsset)
playerItem.addObserver(self, forKeyPath: "status", options: .new, context: nil)
:
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if let status = change?[.newKey] as? Int{
if(status == AVPlayerItemStatus.readyToPlay.rawValue){
yourPlayer.rate = 2.0 // or whatever you want
}
}
}
songItem durum gözlemciden bu sınıfı kaldırmak unutmayın
deinit {
playerItem.removeObserver(self, forKeyPath: "status")
}