В Android getPlaybackHeadPosition() метод класса AudioTrack возвращает положение головы воспроизведения, выраженное в кадрах, каково его эквивалентное значение в миллисекундах?Преобразование кадров в миллисекунды в android
ответ
Я предполагаю, что это было бы
(track.getPlaybackHeadPosition()/track.getSampleRate()) * 1000.0
Другими словами, количество кадров проиграно делится на количество кадров в секунду. Затем вы умножаете результат на 1000, чтобы получить миллисекунды.
Кадр состоит из одного образца на канал и поэтому должен быть эквивалентен частоте дискретизации.
Например, если getPlaybackHeadPosition()
возвращает 8654
и getSampleRate()
возвращает 8000
то время, прошедшее с начала дорожки будет (8654/8000) * 1000
или 1081.75ms
. (Предполагается, что арифметика с плавающей)
Ответ на @Nike прав.
Но есть проблема.
Если мы называем значение MediaExtractor.seekTo
метод, AudioTrack.getPlaybackHeadPosition()
возвращает аккумулировать.
MediaExtractor.getSampleTime()/1000
является правильные ms для текущего положения.
Вы можете проверить это!
Да, вы правы. –
Не стесняйтесь принять ответ тогда :) – Nick
, например, если звук имеет 8000 отсчетов/сек, (track.getPlaybackHeadPosition()/8) дает текущее положение головы воспроизведения в миллисекундах. –