2016-07-28 4 views
1

다음 코드를 사용하여 내 라이브러리에서 비디오를로드하고 나중에 재생합니다. 내 문제는 그것이 매우 느리고 약 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() 
} 

내가에서 개체를 얻을 :

NSNotificationCenter.defaultCenter().addObserver(self 
    , selector: #selector(playerItemDidReachEnd(_:)) 
    , name: AVPlayerItemDidPlayToEndTimeNotification 
    , object: player.currentItem) 

및 기능 : 루프 비디오

let allVideo = PHAsset.fetchAssetsWithMediaType(.Video, options: fetchOptions) 
showVideo(allVideo.lastObject) 

답변

0

나는 알림 사용

func playerItemDidReachEnd(notification: NSNotification) { 
    if let playerItem = notification.object { 
     playerItem.seekToTime(kCMTimeZero) 
    } 
} 
+0

을하고 어디해야 NSNotificationCenter 코드를 추가 하시겠습니까? – mafioso

+0

playVideo()에 넣을 수 있지만 한 번 이상 playVideo()를 호출하려는 경우에는 반드시 관찰자를 삭제해야합니다. – richy

관련 문제