Использование MPMUSICPLAYERCONTROLLER, установка MusicPlayer.CurrentPlayBacktime, чтобы искать, но займет секунду, чтобы вступить в силу

StackOverflow https://stackoverflow.com/questions/2379165

Вопрос

У меня есть неислин, действующий как скруббер. Поскольку большой палец перетаскивается, я выполняю следующее:

- (void) _seekTo:(double)playbackTime {
     mPlayer.currentPlaybackTime = playbackTime;
}

Это прекрасно работает, музыка стремится вперед. После выпуска большого пальца я перезагружаю NStimer, чтобы отправить обновления времени, чтобы сохранить синхронизацию UISLIDER. Проблема в том, что после освобождения большого пальца первые немногие обратные спины содержат предыдущее значение времени. Это заставляет большой палец перепрыгиваться в исходное положение перед возвращением к новой цене. Очень неприглядно.

У кого-нибудь есть какой-то опыт с этим поведением и способ исправить? Я могу поставить образец проекта, если вы хотите, чтобы это демонстрирует эту аномалию.

Это было полезно?

Решение

Может быть, это потому, что в буфере уже есть декодированные данные, когда вы начинаете поиск. Вы ищете минуту вперед, но в буфере есть несколько миллисекундов звука, и когда эти ведра играют, игрок сообщает о своем положении в файле как ток. Только тогда приходите новые ведра из обновленной позиции, и маркер начинает вести себя. (Просто теория.)

Не могли бы вы просто фильтровать промежуточные данные вручную? Вы знаете, насколько вы прыгали, используя ползунок, поэтому, возможно, вы можете хранить новую позицию в переменной и игнорировать обновления от плеера, пока они не будут комфортно рядом с новым положением слайдера. (Надеюсь, что имеет смысл.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top