再生を開始した直後にオーディオファイルで特定の時間にジャンプする必要があります。だから私はAVPlayerが再生を開始した直後に再生する
avPlayer?.seekToTime(jumpTime, completionHandler: { isComplete in
if isComplete {
MPNowPlayingInfoCenter.defaultCenter().nowPlayingInfo![MPNowPlayingInfoPropertyElapsedPlaybackTime] = CMTimeGetSeconds((self.avPlayer!.currentItem?.currentTime())!)
}
})
...完了ハンドラ
avPlayer.play()
でseekToTimeメソッドを使用して問題は、それは、インターネットからファイルの再生を開始する時間を必要としていることです。何らかの理由で、完了ハンドラを持つ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()
でコールバックを使用する方法はありますか?
それはまったく同じように動作しませんでしたが、私はそれを動作させました。それは演奏を開始しませんでした。だから私は完了ハンドラなしでseekToTimeバージョンを使用し、handleCallback()にそこからコードを入れた – ttrs
ああ、ええ、意味があります。不要になったときに 'avPlayer?.removeTimeObserver(observer)'を呼んでオブザーバーを削除することを忘れないでください:) – fiks