Sziasztok,
van néhány videóm (.MP4 konténer), amiknél az audió stream AAC-ben van. Ezekből szeretném kinyerni az audió-t miközben átkódolom MP3-ba.
Eddig ez volt a nyerő cmdline:
ffmpeg.exe -i "input_video_file.mp4" -vn -c:a "mp3" -f mp3 "output_file_mp3_only"
A forrás így néz ki:
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 125 kb/s (default)
A gond, h. a cél fájl CBR 128kbit-es MP3 lesz, holott ennél nagyobb bitrate jót tenne a végeredmény minőségének.
FFmpeg doksit hiába olvastam, elveszek a paraméterek tengerében (ezt az audio-only output in MP3-at is úgy kellett összeollóznom, mert amíg nem ezt adtam meg bitre pontosan, istennek nem akarta elfogadni, a parser hibaüzenetei meg mindenre jók csak a hibát megmondani nem).
Ötlete bárkinek, pontosan mit és hova írjak még bele, h. VBR 128-256 MP3 jöjjön ki a cső végén?
Hozzászólások
-q:a 1
ezzel 190-250 kb/s között lesz az mp3 bitrate. A LAME enkóderrel 10 lépcsőben tudod állítani a VBR bitrate-et. "0" a legjobb (220-260 kb/s), "9" a legrosszabb (45-85 kb/s)
Lásd:
https://trac.ffmpeg.org/wiki/Encode/MP3
Köszönet, működik ahogy írtad!
--
Update: kijött a ffmpeg 4.3.0, felraktam, természetesen nem működik az előtte 2 évig jól működő paraméterezett példa:
ffmpeg.exe -i "input_video.mp4" -vn -c:a "mp3" -f mp3 -q:a 1 "output_audio.mp3"
Output #0, mp3, to 'output_audio.mp3':
Metadata:
major_brand : dash
minor_version : 0
compatible_brands: iso6mp41
TSSE : Lavf58.45.100
Stream #0:0(eng): Audio: mp3 (mp3_mf), 44100 Hz, stereo, s16, 128 kb/s (default)
Akármilyen -q:a <number> értékre ugyanezt adja.
4.2.3 alatt már látszik, miért működik másképpen:
Output #0, mp3, to 'c:\downloads\newretrowave_mp3\Kotovsky86-Space Traveller6.mp3':
Metadata:
major_brand : dash
minor_version : 0
compatible_brands: iso6mp41
TSSE : Lavf58.29.100
Stream #0:0(eng): Audio: mp3 (libmp3lame), 44100 Hz, stereo, fltp (default)
Asszem maradok 4.2.3 alatt....
-b:a 256k ?
A -q:a 1 az VBR 190-250kbps volt. A -b:a 256k meg CBR 256kbps.
Linux alatt nincs vele gond. Szerintem keress másik ffmpeg-et Windowsra.
Ha nem kell a konzolhoz ragaszkodni: https://hup.hu/cikkek/20200615/a_shutter_encoder_megjelent_linuxra_is
ffmpeg -i "valami.mp4" -ab 320000 "valami.mp3"
Persze, sokkal jobb először wav-ot csinálni, azt meg lame -vel átkódolni mp3-ra. A lame sokkal kifinomultabb az mp3 témában.
-fs-
Az olyan tárgyakat, amik képesek az mc futtatására, munkaeszköznek nevezzük.
Nem mintha az ffmpeg nem a libmp3lame-t használná... Valszeg ugyanúgy szénné lehet paraméterezni, csak nem azonos módon.
A -q:a 1 az VBR 190-250kbps volt. A -b:a 320000 meg CBR 320kbps. (az -ab meg tudtommal syntax error)
Szerintem az 1 -es paramétert csak átadja a beleforgatott lame lib-nek a program. A libmp3lame-nek kellene ezt kezelni. Szerintem.
Csak akkor szólok hozzá egy témához, ha értelmét látom.
> az -ab meg tudtommal syntax error
Nem biztos. Ha regebben volt ilyen kapcsoloja az FFmpeg-nek, akkor backward compatibility van es eleg sokmindent tamogat. Pl a -vcodec / -acodec is mar ezer eve nem letezo switchet (-c:a es -c:v van helyette), megis supported.
Blog | @hron84
via @snq-