Looking for code to determine length of audio files

I’m working on a project which has the requirement to automatically
determine the runtime of audio files in several formats, right now mp3
and aac.

I googled around to see if there might be some existing code,
hopefully ruby code which can determine this, but I’m coming up dry.

Any ideas?


Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

On Jan 18, 2008, at 6:47 PM, Rick DeNatale wrote:

Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

cfp:~/src/ruby > mp3info -p “%S seconds\n” /Users/ahoward/mp3/hot
chip\ -\ crap\ kraft\ dinner.mp3
394 seconds

a @ http://codeforpeople.com/

I got curious and decided to look at RAA.
http://raa.ruby-lang.org/
mp3info claims to be able to give mp3 length.
-Carlos

On Sat, 19 Jan 2008 10:47:47 +0900, “Rick DeNatale”
[email protected] said:

Quoth Rick DeNatale:

Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

Take a look at the metadata gem. It harnesses several libraries to
provide
meta-information from a wide variety of formats. Not sure if runtime
length
is stored in the file’s metadata but it may serve your needs.

HTH,

I wrote this to determine how much dictation there is to do in my office
to see how backed up the typist is. It’s a quick and dirty program but
it works
#---------------------------------------

Compute time of unfinished dictation

#--------------------------------------

Version 1.1 1/18/07

require ‘find’
file_tb = Array.new
Find.find(".\trdict",".\Dictations") do |f|
if f =~ /DONE/
Find.prune
elsif f =~ /wav/
fsize = File.stat(f).size
time = fsize.to_f * 0.00157 / 1000.0 #minutes
file_tb.push([f,fsize,time])
elsif f =~ /WMA/
fsize = File.stat(f).size
time = f.size.to_f * 0.008123 / 1000.0
file_tb.push([f,fsize,time])
end
end

totSize = 0
totTime = 0
#file_tb.each {|x| p “#{x[0]} #{x[1]} #{x[2]}”}
file_tb.each {|x| totSize += x[1]; totTime += x[2]}
p “# Files=#{file_tb.size}, File Size=#{totSize/1000000} MB, Total
Time=#{totTime} Min”
sleep 10

On 1/19/08, Tom R. [email protected] wrote:

I wrote this to determine how much dictation there is to do in my office
to see how backed up the typist is. It’s a quick and dirty program but
it works

Except that it doesn’t handle the file types I need.


Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

On 1/18/08, ara.t.howard [email protected] wrote:

On Jan 18, 2008, at 6:47 PM, Rick DeNatale wrote:

I’m working on a project which has the requirement to automatically
determine the runtime of audio files in several formats, right now mp3
and aac.

cfp:~/src/ruby > mp3info -p “%S seconds\n” /Users/ahoward/mp3/hot
chip\ -\ crap\ kraft\ dinner.mp3
394 seconds

Where does this mp3info come from? I installed mp3info from
http://ruby-mp3info.rubyforge.org/ following Carlo’s lead, but it
doesn’t seem to have a command line component.

But looking at an example of the podcast I need to handle, in both mp3
and aac format, neither seems to have any duration related tags.

So I guess I need to figure out if there’s any way to compute the
duration.

Any ideas anyone?


Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

I have just yesterday tried a script using mp3info, which worked a treat
identifying some music files and giving their length
even though their was no tag data. Hope this helps.

require ‘mp3info’

Dir.chdir(“C:/Mymusic)
musicdir=Dir.glob(”*.mp3")
musicdir.sort
out=""
musicdir.each do |f|
Mp3Info.open(f) do |mp3|
l=mp3.length
mins=l.divmod(60)
if mins[0]==0
ln=mins[1].round.to_s+" secs"
else
ln=mins[0].to_s+ " minutes, “+mins[1].round.to_s+” seconds"
end
fl=mp3.filename

out+= fl + "    length:    "+ln+"\n\n"

end

end

f= File.open(“musicinfo.txt”,“w”)
f.write(out)
f.close

On 1/24/08, ara.t.howard [email protected] wrote:

On Jan 24, 2008, at 9:55 AM, Rick DeNatale wrote:

Where does this mp3info come from? I installed mp3info from
http://ruby-mp3info.rubyforge.org/ following Carlo’s lead, but it
doesn’t seem to have a command line component.

osx? port install mp3info

otherwise: MP3Info

Ara,

Thanks!

We’d found another program called sox as an alternative, but at least
on OSX, it’s rather slow, it’s really an audio file transcoder and it
seems to be doing quite a bit of work to discover the playing time,
several seconds for a 30 minute MP3.


Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

On Jan 24, 2008, at 9:55 AM, Rick DeNatale wrote:

Where does this mp3info come from? I installed mp3info from
http://ruby-mp3info.rubyforge.org/ following Carlo’s lead, but it
doesn’t seem to have a command line component.

osx? port install mp3info

otherwise: MP3Info

regards.

a @ http://codeforpeople.com/

Rick DeNatale wrote:

But looking at an example of the podcast I need to handle, in both mp3
and aac format, neither seems to have any duration related tags.

So I guess I need to figure out if there’s any way to compute the duration.
Any ideas anyone?

mp3info tries to estimate the running time unless you run it with the -F
option,
which tells it to scan the whole file and count frames etc.

I have a command-line version installed in Debian using apt-get, and the
same
version installed in Windows. I haven’t tried the Mac version yet.

Clifford H…