재생을 시작한 직후 오디오 파일에서 특정 시간으로 이동해야합니다. 그래서AVPlayer가 재생을 시작한 직후에 검색합니다.
avPlayer?.seekToTime(jumpTime, completionHandler: { isComplete in
if isComplete {
MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo![MPNowPlayingInfoPropertyElapsedPlaybackTime] = CMTimeGetSeconds((self.avPlayer!.currentItem?.currentTime())!)
}
})
문제는 인터넷에서 파일을 재생을 시작하는 데 시간이 필요하다는 것입니다 ... 완료 핸들러
avPlayer.play()
와 seekToTime 방법을 사용합니다. 어떤 이유로 avPlayer가 재생하기 전에 호출되기 때문에 완료 핸들러가있는 seekToTime 버전이 앱을 충돌시킵니다. 완료 처리기가없는 버전에서는 문제가 없습니다.
오류 :
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'AVPlayerItem cannot service a seek request with a completion handler until its status is AVPlayerItemStatusReadyToPlay.'
avPlayer.play()
와 콜백을 사용하는 방법이 있나요?
정확하게 작동하지 않지만 작동하게 만들었습니다. 그것은 시작되지 않았다. 그래서 완성 처리기없이 seekToTime 버전을 사용하여 거기에서 handleCallback() 코드를 삽입했습니다. – ttrs
오, 그래, 의미가 있습니다. 더 이상 필요하지 않을 때'avPlayer? .removeTimeObserver (observer)'를 호출하여 관찰자를 제거하는 것을 잊지 마십시오 :) – fiks