2012-05-01 5 views

ответ

20

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

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

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

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

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

+0

Да, вы правы. –

+0

Не стесняйтесь принять ответ тогда :) – Nick

+0

, например, если звук имеет 8000 отсчетов/сек, (track.getPlaybackHeadPosition()/8) дает текущее положение головы воспроизведения в миллисекундах. –

0

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

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

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

MediaExtractor.getSampleTime()/1000 является правильные ms для текущего положения.

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

 Смежные вопросы

  • Нет связанных вопросов^_^