gpt4 book ai didi

ios - AVPlayer开始播放后立即寻找

转载 作者:搜寻专家 更新时间:2023-10-31 08:32:10 26 4
gpt4 key购买 nike

我需要在音频文件开始播放后立即跳转到特定时间。所以我使用带有完成处理程序的 seekToTime 方法

avPlayer.play()

...

avPlayer?.seekToTime(jumpTime, completionHandler: { isComplete in
if isComplete {
MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo![MPNowPlayingInfoPropertyElapsedPlaybackTime] = CMTimeGetSeconds((self.avPlayer!.currentItem?.currentTime())!)
}
})

问题是开始播放来自互联网的文件需要时间。由于某种原因,带有完成处理程序的 seekToTime 版本使应用程序崩溃,因为它是在 avPlayer 开始播放之前调用的。没有完成处理程序的版本工作正常。

错误:

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() 使用回调?

最佳答案

是的,有办法。

需要观察player的变化:

avPlayer?.addPeriodicTimeObserverForInterval(CMTime(value: 1, timescale: 3), queue: dispatch_get_main_queue()) { [weak self] time in
self?.handleCallback(time)
}

然后你在回调中处理状态:

func handleCallback(time: CMTime) {    
if avPlayer?.status == .ReadyToPlay {
// place your seek logic here
}
}

关于ios - AVPlayer开始播放后立即寻找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38332162/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com