Подтвердить что ты не робот

Преобразование кадров в миллисекунды в android

В Android getPlaybackHeadPosition() метод AudioTrack возвращает позицию воспроизведения, выраженную в кадрах, каково ее эквивалентное значение в миллисекундах?

4b9b3361

Ответ 1

Я предполагаю, что это будет

( track.getPlaybackHeadPosition( ) / track.getSampleRate( ) ) * 1000.0

Другими словами, количество воспроизводимых кадров делится на количество кадров в секунду. Затем вы умножаете результат на 1000, чтобы получить миллисекунды.

Кадр состоит из одного образца на канал и поэтому должен быть эквивалентен частоте дискретизации.

Например, если getPlaybackHeadPosition( ) возвращает 8654 и getSampleRate( ) возвращает 8000, то время с начала дорожки будет ( 8654 / 8000 ) * 1000 или 1081.75ms. (Предполагая арифметику с плавающей запятой)

Ответ 2

Ответ от @Nike прав.

Но есть проблема.

Если мы вызываем метод MediaExtractor.seekTo, AudioTrack.getPlaybackHeadPosition() возвращает значение накопления.

MediaExtractor.getSampleTime() / 1000 - это правильный ms для текущей позиции.

Вы можете проверить это!