This is how to extract the play time (min:sec)..

Reading through the boards for this very question, I wasn't able to find this answer. So I dove in, and found it very easy to extract.

So here's the underworkings.



Total_Seconds = File_Length / (bitrate / 8) / 1000;



To retrieve the bitrate, you'll need to read the first 4 bytes of the file, and mask out a bitindex value. This is stored in the upper 4 bits of the 3rd byte in the file.

Examp. of mask:



BitIndex = (Byte3 AND 240) / 16



The division just shifts the bits over so we can use the result for the bitrate lookup table.



This value will be used in a lookup table.

For standard mpeg 1 layer 3, use this table

0: BitRate = -1 (currupt file?)

1: BitRate = 32

2: BitRate = 40

3: BitRate = 48

4: BitRate = 56

5: BitRate = 64

6: BitRate = 80

7: BitRate = 96

8: BitRate = 112

9: BitRate = 128

10: BitRate = 160

11: BitRate = 192

12: BitRate = 224

13: BitRate = 256

14: BitRate = 320

(Other MPEG tables exist, try

http://home.swipnet.se/grd/mp3info/frmheader/index.html for more info)



Now once you have the Bitrate, you can use the formula:



Total_Seconds = File_Length / (bitrate / 8) / 1000;



And you got the length in seconds. (simple math to calc Min:Sec).



NOTES: This does not account for variable bitrate files, or files with different Khz, Mono, etc.. So you may have to adjust accordingly.



Hope this helps someone.



Jikg


Sign In or Register to comment.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories