Finding the length of an mp3 file

You can use FFMPEG libraries:

    args=("ffprobe","-show_entries", "format=duration","-i",filename)
    popen = subprocess.Popen(args, stdout = subprocess.PIPE)
    popen.wait()
    output = popen.stdout.read()

and the output will be:

[FORMAT]
duration=228.200515
[/FORMAT]

Newer versions of python-ffmpeg have a wrapper function for ffprobe. An example of getting the duration is like this:

import ffmpeg
print(ffmpeg.probe('in.mp4')['format']['duration']))

Found at: https://github.com/kkroening/ffmpeg-python/issues/57#issuecomment-361039924


You can use mutagen to get the length of the song (see the tutorial):

from mutagen.mp3 import MP3
audio = MP3("example.mp3")
print(audio.info.length)

You can also get this using eyed3, if that's your flavor by doing:

import eyed3
duration = eyed3.load('path_to_your_file.mp3').info.time_secs

Note however that this uses sampling to determine the length of the track. As a result, if it uses variable bit rate, the samples may not be representative of the whole, and the estimate may be off by a good degree (I've seen these estimates be off by more than 30% on court recordings).

I'm not sure that's much worse than other options, but it's something to remember if you have variable bit rates.

Tags:

Python

Mp3