Looking for code to determine length of audio files

R

Rick DeNatale

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?
 
A

ara.t.howard

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/


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


a @ http://codeforpeople.com/
 
T

Tom Reilly

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
 
R

Rick DeNatale

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.
 
R

Rick DeNatale

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?
 
J

jonty

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
 
R

Rick DeNatale

osx? port install mp3info

otherwise: http://www.ibiblio.org/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.
 
C

Clifford Heath

Rick said:
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 Heath.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,768
Messages
2,569,574
Members
45,048
Latest member
verona

Latest Threads

Top