AudioKit 5 iOS Текущее время воспроизведения

Здравствуйте, уважаемые пользователи AudioKit.

Я пытаюсь настроить AudioKit 5 с указанием времени воспроизведения, и у меня возникают проблемы.

Если я использую свойство длительности AudioPlayer, это будет общее время аудиофайла, а не текущее время воспроизведения.

ex:

let duration = player.duration

Всегда дает общее время файла.

Глядя на старый код из AKAudioPlayer, кажется, что у него есть свойство currentTime.

Руководство по миграции (https://github.com/AudioKit/AudioKit/blob/v5-main/docs/MigrationGuide.md) упоминает некоторые потенциально полезные классы из старой версии, однако AKTimelineTap не имеет замены и комментариев от разработчиков... приятно.

Также все еще не уверен, как манипулировать текущим временем воспроизведения...

Я также проверил кулинарные книги Audio Kit 5, однако они предназначены для добавления эффектов и узлов, а не обязательно для отображения воспроизведения и т. д.

Спасибо за любую помощь с этой новой версией AudioKit.


person TheJeff    schedule 02.01.2021    source источник


Ответы (1)


Вы можете найти playerNode в AudioPlayer, это класс AVAudioPlayerNode.

Используйте lastRenderTime и playerTime, вы можете рассчитать текущее время.

ex:

// get playerNode in AudioPlayer.
let playerNode = player.playerNode

// get lastRenderTime, and transform to playerTime.
guard let lastRenderTime = playerNode.lastRenderTime else { return }
guard let playerTime = playerNode.playerTime(forNodeTime: lastRenderTime) else { return }
        
// use sampleRate and sampleTime to calculate current time in seconds.
let sampleRate = playerTime.sampleRate
let sampleTime = playerTime.sampleTime
let currentTime = Double(sampleTime) / sampleRate
person RoySparrow    schedule 20.01.2021
comment
Спасибо, я попробую. - person TheJeff; 23.01.2021