13

In Android the getPlaybackHeadPosition() method of AudioTrack class returns the playback head position expressed in frames ,what is its equivalent value in milli seconds?

Raneez Ahmed
  • 3,808
  • 3
  • 35
  • 58

2 Answers2

21

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)

Nick
  • 25,026
  • 7
  • 51
  • 83
0

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!

peerless2012
  • 179
  • 1
  • 7