It might be much easier to use an external program to figure out the
length.
Here's an example that uses sox to convert just about any audio file
into a raw format, and then determines duration by dividing length of
the raw output by number of bytes per frame.

I don't know if they make sox for Windows, but there must be something
analogous.
This takes a few seconds to run on a P4/2.8, depending of course on the
input mp3.

-------------------
import os

# return length of audio file, in seconds
def audio_file_duration(filename):
if not os.path.exists(filename):
raise Exception("file not found")
# convert into 8000Hz mono 8-bit
output_stream = os.popen('sox %s -t raw -r 8000 -U -b -c 1 -p -' %
filename)
bytes_read = 0
block_size = 2048
while True:
chunk = output_stream.read(block_size)
if not chunk:
break
bytes_read += len(chunk)
return float(bytes_read) / 8000

-----------------------
I apologize for the hosed indentation.  Google Groups is mangling my
posts.

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to