I need a script or cmd line tool get an mp3 length in milliseconds. The files are 64 kbits mono cbr encoded with lame.
(I looked for a libmad for ruby, my language of choice, but found nothing noteworthy...)
I need a script or cmd line tool get an mp3 length in milliseconds. The files are 64 kbits mono cbr encoded with lame.
(I looked for a libmad for ruby, my language of choice, but found nothing noteworthy...)
http://id3lib-ruby.rubyforge.org/ ? This page has the code you need.
def self.get_audio_length(filepath)
pipe = "ffmpeg -i "+ filepath.to_s+" 2>&1 | grep 'Duration' | cut -d ' ' -f 4 | sed s/,//"
command = `#{pipe}`
if command =~ /([\d][\d]):([\d][\d]):([\d][\d]).([\d]+)/
#convert the result to only secs
duration = ($2.to_i * 60) + $3.to_i
end
#return and array containing the seconds and the human readable time length, ["6453","03:54"]
return "#{duration.to_s},#{$2}:#{$3}".split(",")
end
Try exiftool:
$ sudo apt-get install libimage-exiftool-perl
$ exiftool "Stone Sour-Stone Sour-Bother.mp3"
ExifTool Version Number : 6.93
File Name : Stone Sour-Stone Sour-Bother.mp3
Directory : .
File Size : 6 MB
File Modification Date/Time : 2006:05:15 19:09:52
File Type : MP3
MIME Type : audio/mpeg
MPEG Audio Version : 1
Audio Layer : 3
Audio Bitrate : 128000
Sample Rate : 44100
Channel Mode : Joint Stereo
MS Stereo : On
Intensity Stereo : Off
Copyright Flag : False
Original Media : True
Emphasis : None
Album : Stone Sour
Artist : Stone Sour
Comment : *** / Foobar2000: MPC->MP3
Genre : Rock
Title : Bother
Track : 08
Recording Time : 2002
User Defined Text : (sub-genre) Alt Metal
Year : 2002
Duration : 0:06:03.67 (approx)
I know ffmpeg can do this easily:
ffmpeg -i file.mp3 2>&1|sed -n "s/.*Duration: \([^,]*\).*/\1/p"
Unfortunately, I don't know any Ruby library that handles this.