Frames to milliseconds conversion in android
-
04-06-2021 - |
Question
In Android the getPlaybackHeadPosition() method of AudioTrack class returns the playback head position expressed in frames ,what is its equivalent value in milli seconds?
Solution
I'm guessing that it would be
( track.getPlaybackHeadPosition( ) / track.getSampleRate( ) ) * 1000.0
In other words, the number of frames played divided by the number of frames per second. You then multiply the result by 1000 to get milliseconds.
A frame consists of one sample per channel and so should be equivalent to sample rate.
For example, if getPlaybackHeadPosition( )
returns 8654
and getSampleRate( )
returns 8000
then the time since the start of the track would be ( 8654 / 8000 ) * 1000
or 1081.75ms
. (Assuming floating point arithmetic)
OTHER TIPS
The answer by @Nike is right。
But there is a problem。
If we call the MediaExtractor.seekTo
method, AudioTrack.getPlaybackHeadPosition()
returns accumulate value。
MediaExtractor.getSampleTime() / 1000
is the right ms for current position.
You can check it out!