[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Looking for code to determine length of audio files

Rick DeNatale

1/19/2008 1:48:00 AM

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

9 Answers

ara.t.howard

1/19/2008 2:06:00 AM

0


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


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


a @ http://codeforp...
--
we can deny everything, except that we have the possibility of being
better. simply reflect on that.
h.h. the 14th dalai lama




Carlos J. Hernandez

1/19/2008 2:10:00 AM

0

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

On Sat, 19 Jan 2008 10:47:47 +0900, "Rick DeNatale"
<rick.denatale@gmail.com> said:
> 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.denh...
>

Tom Reilly

1/19/2008 4:44:00 PM

0

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
ara.t.howard 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.
>>
>> 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.denh...
>>
>
>
> cfp:~/src/ruby > mp3info -p "%S seconds\n" /Users/ahoward/mp3/hot\
> chip\ -\ crap\ kraft\ dinner.mp3
> 394 seconds
>
>
> a @ http://codeforp...
> --
> we can deny everything, except that we have the possibility of being
> better. simply reflect on that.
> h.h. the 14th dalai lama
>
>
>
>
>


Rick DeNatale

1/24/2008 4:49:00 PM

0

On 1/19/08, Tom Reilly <w3gat@nwlagardener.org> 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.denh...

Rick DeNatale

1/24/2008 4:55:00 PM

0

On 1/18/08, ara.t.howard <ara.t.howard@gmail.com> 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.ruby... 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.denh...

ara.t.howard

1/24/2008 6:21:00 PM

0


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

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

osx? port install mp3info

otherwise: http://www.ibiblio.or...

regards.

a @ http://codeforp...
--
share your knowledge. it's a way to achieve immortality.
h.h. the 14th dalai lama



jonty

1/24/2008 7:10:00 PM

0

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



Rick DeNatale wrote:
> On 1/18/08, ara.t.howard <ara.t.howard@gmail.com> 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.ruby... 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

1/25/2008 12:20:00 AM

0

On 1/24/08, ara.t.howard <ara.t.howard@gmail.com> 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.ruby... following Carlo's lead, but it
> > doesn't seem to have a command line component.
>
> osx? port install mp3info
>
> otherwise: http://www.ibiblio.or...

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

Clifford Heath

1/25/2008 1:50:00 AM

0

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