Мне нужно определить, когда достигается определенная отметка времени в AKPlayer
. Когда эта точка достигнута, я перемещаю точку воспроизведения назад, чтобы повторить часть песни для поддержки функции вампа в приложении.
Мой текущий подход заключается в использовании Timer
, который запускается каждую миллисекунду, чтобы проверить,player.currentTime
встретил или превысил определенное время. Проблема, которую я вижу, состоит в том, что currentTime
не изменяется достаточно быстро, чтобы обнаружить это - похоже, оно обновляется каждые 11 миллисекунд, что недостаточно точно для моего варианта использования. Звук превышает отметку времени, прежде чем я поймаю его. Здесь вы можете видеть, что значение не меняется при каждом срабатывании таймера, а когда оно действительно меняется, это разница в 11,6 миллисекунд, поэтому, если бы мне нужно было узнать, когда игрок нажал 0,5125 секунд, я бы не обнаружил это, покаигрок проработал около 10 миллисекунд за это время.
0.5108390022675737
0.5108390022675737
0.5108390022675737
0.5108390022675737
0.5108390022675737
0.5108390022675737
0.5108390022675737
0.5108390022675737
0.5108390022675737
0.5108390022675737
0.5108390022675737
0.5108390022675737
0.5224489795918368
0.5224489795918368
0.5224489795918368
0.5224489795918368
0.5224489795918368
0.5224489795918368
0.5224489795918368
0.5224489795918368
0.5224489795918368
0.5224489795918368
0.5224489795918368
Другой вариант, который я исследовал, пытался наблюдать currentTime
с КВО, но, к сожалению, это никогда не вызывалось.
currentTimeObserver = player.observe(\.currentTime) { (player, change) in
print("Changed to \(player.currentTime)")
}
Есть ли способ более точно отследить currentTime
или иным образом зарегистрироваться, чтобы получать уведомления о достижении определенной отметки времени?