AVPlayerにおけるシークの実装
やりたいこと
スムーズなシークを行いたい
ポイント
下記の回答によると、以下がポイントとして挙げられる。
AVPlayer.seekToTime を高頻度に呼び出すことは避けるべき
AVPlayer.seekToTime が呼び出されるとその時点で進行中のシークがキャンセルされてしまう
高頻度に呼び出すと、結果的にシーク処理が何度も行われてスムーズにシークできない
AVPlayer.seekToTime が実行中であれば、まずはその完了を待つこと
シーク中に他のシーク要求が行われたら、そのシーク要求はキャッシュしておく
シーク完了時にキャッシュされたシーク要求を参照し、必要であればシークし直すと良い