Ios 快速视频回放持续时间长
我使用以下代码从我的库中加载视频,然后播放。我的问题是速度很慢,所以我不得不等待重播大约10秒,即使这样,它也不能正常工作Ios 快速视频回放持续时间长,ios,swift,video,avfoundation,Ios,Swift,Video,Avfoundation,我使用以下代码从我的库中加载视频,然后播放。我的问题是速度很慢,所以我不得不等待重播大约10秒,即使这样,它也不能正常工作 func showVideo(obj: AnyObject!) { manager.requestAVAssetForVideo(obj as! PHAsset, options: videoOptions, resultHandler: {(avAsset: AVAsset?, audioMix: AVAudioMix?, info: [NSObject : An
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)
要循环视频,我使用通知:
NSNotificationCenter.defaultCenter().addObserver(self
, selector: #selector(playerItemDidReachEnd(_:))
, name: AVPlayerItemDidPlayToEndTimeNotification
, object: player.currentItem)
以及功能:
func playerItemDidReachEnd(notification: NSNotification) {
if let playerItem = notification.object {
playerItem.seekToTime(kCMTimeZero)
}
}
要循环视频,我使用通知:
NSNotificationCenter.defaultCenter().addObserver(self
, selector: #selector(playerItemDidReachEnd(_:))
, name: AVPlayerItemDidPlayToEndTimeNotification
, object: player.currentItem)
以及功能:
func playerItemDidReachEnd(notification: NSNotification) {
if let playerItem = notification.object {
playerItem.seekToTime(kCMTimeZero)
}
}
我应该在哪里添加NSNotificationCenter代码?您可以将其放入playVideo()中,但如果要多次调用playVideo(),请不要忘记删除观察者。我应该在哪里添加NSNotificationCenter代码?您可以将其放入playVideo()中,但如果要多次调用playVideo(),请不要忘记删除观察者