Атрымаць MP3 Даўжыня ў Linux/FreeBSD

У мяне ёсць куча mp3-файлы з рознай даўжынёй. Я хачу, каб скараціць яго да 50% -60% даўжыні. Кажа, ад 1 хвіліны да 30 секунд. Яна павінна быць трывіяльнай з дапамогай FFmpeg. Але, я не ведаю, як вызначыць першапачатковую даўжыню яго ў якасці асновы для апрацоўкі з дапамогай FFmpeg.

Хто-небудзь ёсць ідэі?

24

8 адказы

З FFmpeg няма ніякага спосабу, я ведаю, каб атрымаць даўжыню ў якасці зменнай, якую можна выкарыстоўваць на сцэнар. Але mp3info робіць.

mp3info -p "%s" sample.mp3  //total time in seconds
25
дададзена
так, няма ніякага спосабу, каб атрымаць даўжыню дадзеныя ў FFmpeg. Я ўжо казаў там, я выкарыстоўваю FFmpeg толькі пасля таго, як я атрымліваю даўжыню. У любым выпадку, дзякуй за арлом.
дададзена аўтар MT_Head, крыніца
Лепшы адказ, як гэта працуе нават з Сярэднім або MP3 з пераменным бітрэйт!
дададзена аўтар KrisWebDev, крыніца
Варта адзначыць, што гэта толькі забяспечвае даўжыню ў выглядзе цэлага ліку. Так не можа быць дастаткова дакладнымі для некаторых выпадкаў ужывання.
дададзена аўтар Ross, крыніца
Дадаць \ п для друку новага радка таксама. <�Код >> mp3info -p "% S \ п" sample.mp3 //агульны час у секундах
дададзена аўтар nexayq, крыніца

ffmpeg will print everything it knows about the file if you don't give it any other arguments. Use grep to strip out everything but the "Duration":

$ ffmpeg -i foo.mp3 2>&1 | grep Duration
  Duration: 01:02:20.20, start: 0.000000, bitrate: 128 kb/s

Вы можаце таксама выкарыстоўваць MPLAYER . Grep для лініі "ID_LENGTH =":

$ mplayer -ao null -identify -frames 0 foo.mp3 2>&1 | grep ID_LENGTH
ID_LENGTH=3740.00
22
дададзена
Сцеражыцеся сцяга -analyzeduration FFmpeg ,. У прынцыпе, лік гэты справаздачы адзнака пасля пэўнага моманту ў мэтах эканоміі CPU.
дададзена аўтар Coxy, крыніца
Падводзячы даўжыню набору файлаў MP3, вы можаце выкарыстоўваць нешта накшталт TOTLENGTH = 0; для е ў * .mp3; зрабіць LENGTH = $ (MPlayer -ao нуль -identify -frames 0 "$ F" 2> & 1 | AWK -F = '/ ID_LENGTH/{друк $ 2}' | AWK -F '{друк $ 1}'.); TOTLENGTH = $ (($ TOTLENGTH + $ ДАЎЖЫНЯ)); зроблена; Рэха $ TOTLENGTH для друку агульнай даўжыні аўдыё ва ўсіх файлах, у секундах. Гэта, верагодна, можа быць зроблена больш эфектыўна, але так як я напісаў гэта як аднаразова, гэта было дастаткова добра для маіх патрэбаў. (Другі AWK заклік адсякае дзесятковыя, так што вынік не з'яўляецца 100% дакладным, але зноў жа, дастаткова добра для маіх патрэбаў.)
дададзена аўтар Michael Kjörling, крыніца
Выкарыстоўваючы сярэдні бітрэйт MP3, FFmpeg паведамляе няслушную працягласць разам з гэтым папярэджаннем Ацэнка працягласці ад бітрэйту, гэта можа быць недакладнай . Я думаю, што гэты адказ сапраўдны толькі пры <�б> Constant Bitrate MP3.
дададзена аўтар KrisWebDev, крыніца
$ FFmpeg -i foo.mp3 2> & 1 | AWK '/ Працягласць/{Друк зиЬзЬг ($ 2,0, даўжыня ($ 2) -1)}' Для толькі часовага ўчастка
дададзена аўтар Anonymouse, крыніца

Цікава, што ExifTool прыкладанне дае працягласць MP3 у якасці апошняга радка!

$ exiftool somefile.mp3
ExifTool Version Number         : 7.98
File Name                       : somefile.mp3
Directory                       : .
File Size                       : 49 MB
File Modification Date/Time     : 2009:09:10 11:04:54+05:30
File Type                       : MP3
MIME Type                       : audio/mpeg
MPEG Audio Version              : 2.5
Audio Layer                     : 3
Audio Bitrate                   : 64000
Sample Rate                     : 8000
Channel Mode                    : Single Channel
MS Stereo                       : Off
Intensity Stereo                : Off
Copyright Flag                  : False
Original Media                  : True
Emphasis                        : None
ID3 Size                        : 26
Genre                           : Blues
Duration                        : 1:47:46 (approx)
9
дададзена

Яшчэ адзін спосаб атрымаць працягласць толькі з дапамогай FFmpeg і Grep :

# ffmpeg -i rara.mp3 2>&1 |grep -oP "[0-9]{2}:[0-9]{2}:[0-9]{2}.[0-9]{2}"
00:03:49.12
3
дададзена

Я асабіста выкарыстоўваю Mplayer , каб атрымаць інфармацыю, у асноўным таму, што я ўжо ўсталяваны і не можа быць папрацаваў ўсталяваць новае праграмнае забеспячэнне без неабходнасці. Перавагай гэтага з'яўляецца тое, што яно не абмяжоўваецца mp3 файлаў, у прыватнасці, і павінны працаваць з любой медыя файл, які Mplayer можа справіцца. Наступны адзін лайнер будзе вяртаць даўжыню трэка ў секундах.

mplayer -identify -ao null -vo null -frames 0 Filename.mp3 | grep ^ID_LENGTH= | cut -d = -f 2
1
дададзена

Вы можаце выкарыстоўваць FFmpeg, каб атрымаць працягласць файла. Проста выкарыстоўвайце:

ffmpeg -i  2>&1 | grep "Duration" | cut -d ' ' -f 4 | sed s/,//
1
дададзена

Рашэнні з выкарыстаннем FFmpeg Убей меня, як трохі далікатным, так як яны разборы выснову, што не зусім распрацаваны ў якасці інтэрфейсу. Тым не менш, яны, верагодна, працягнуць працаваць на працягу некалькіх гадоў, незалежна.

ffmpeg comes with a tool ffprobe to get information about audio files (lots of formats, including mp3), and can produce machine readable output. The following command gets the song duration.

ffprobe -show_streams -print_format json song.mp3 -v fatal | jq '.streams[0].duration'
0
дададзена
Вы можаце проста зрабіць ffprobe -show_entries паток = працягласць -of кампактнаму = р = 0: пк = 1 -v фатальнай song.mp3
дададзена аўтар Mehul Gavit, крыніца

У мяне была тая ж праблема, і знайшоў каманду MPlayer (goldPseudo) працаваў добра, але пасля я выявіў, што калі вы адкрыеце альбом у Rhythmbox вы будзеце бачыць яго статус радок дае колькасць дарожак, агульны час прайгравання і памеру дыска.

0
дададзена