我使用以下代码从我的库中加载视频并在之后播放。我的问题是它非常慢,所以我必须等待重播大约10秒,即使这样它也不能很好地工作。
func showVideo(obj: AnyObject!) {
manager.requestAVAssetForVideo(obj as! PHAsset, options: videoOptions, resultHandler: {(avAsset: AVAsset?, audioMix: AVAudioMix?, info: [NSObject : AnyObject]?) -> Void in
self.url = (avAsset as! AVURLAsset).URL
self.playVideo()
})
}
// plays the video
private func playVideo() {
asset = AVAsset(URL: url!)
playerItem = AVPlayerItem(asset: asset!)
player = AVPlayer(playerItem: self.playerItem!)
playerLayer = AVPlayerLayer(player: self.player)
playerLayer.frame = view.frame
view.layer.addSublayer(self.playerLayer!)
player!.play()
}
我得到的对象是:
let allVideo = PHAsset.fetchAssetsWithMediaType(.Video, options: fetchOptions)
showVideo(allVideo.lastObject)
答案 0 :(得分:0)
要循环播放视频,我使用通知:
NSNotificationCenter.defaultCenter().addObserver(self
, selector: #selector(playerItemDidReachEnd(_:))
, name: AVPlayerItemDidPlayToEndTimeNotification
, object: player.currentItem)
和功能:
func playerItemDidReachEnd(notification: NSNotification) {
if let playerItem = notification.object {
playerItem.seekToTime(kCMTimeZero)
}
}