AVPlayer を使用してビデオを再生しています。ユーザーの入力に基づいてビデオのセクションをループできるようにしたいと思います (ビデオの再生中に、ユーザーはボタンを押してループを開始し、もう一度押して数秒後に終了することができます。開始時間に再生を開始し、現在の時間が指定された終了時間に達するとループを継続する必要があります)
プレーヤーの currentTime を取得するだけで、これらの開始/終了ループ時間を取得できます
var startLoop : CMTime = player.currentTime()
// seconds pass by ....
var endLoop : CMTime = player.currentTime()
次のように、再生が終了したら、ビデオをきれいにループして最初に戻す方法があることを私は知っています。
NotificationCenter.default.addObserver(forName: .AVPlayerItemDidPlayToEndTime, object: self.player.currentItem, queue: .main) { [weak self] _ in
self?.player?.seek(to: CMTime.zero)
self?.player?.rate = self?.rate ?? 1.0
}
カスタムの startLoop 時間と endLoop 時間でこれを行う方法があるかどうか疑問に思っていましたか?