Hogyan konvertálhatunk át flac formátumú zenefájlokat mp3-ba

botond küldte be 2020. 12. 30., sze – 23:00 időpontban

Tartalom

 

Bevezető

Zenék letöltésekor nem mindig mp3 formátumban jutunk a zenefájlokhoz, hanem például flac-ban, vagy más formátumokban. Ilyenkor célszerű átkonvertálni őket mp3-ba, hogy minden lejátszóval kompatibilis legyen, valamint a fájlméret is optimális legyen. Korábban készítettem már egy leírást arról, hogy hogyan konvertálhatunk át m4a formátumú zenefájlokat mp3-ba, ebben a leírásban pedig flac formátumból konvertálunk mp3-ba többféle módszer segítségével Debian/Ubuntu rendszereken.

A flac (Free Lossless Audio Codec) egy szabad felhasználású, veszteségmentes audio kódek, aminek segítségével veszteségmentes hangtömörítést kapunk, amivel sokkal jobb tömörítési eredmény érhető el, mint például egy ZIP, GZIP tömörítéssel. A veszteségmentes tömörítés lényege, hogy a konvertálási folyamat visszafordítható, azaz bármikor visszanyerhetjük az eredeti hanganyagot. Az mp3 ezzel szemben veszteséges tömörítést kínál – amiből már nem nyerhető vissza a pontos eredeti hangfájl, hanem csak megközelítő minőségben –, cserében az eredeti fájlméret töredékéért. Persze az mp3 ilyen tömörítés mellett is tud olyan jó minőséget, ami stúdiókban is megállja a helyét, ezért is lett ennyire népszerű és elterjedt. Ha tehát szeretnénk tárhelyet spórolni közel azonos hangminőség mellett, akkor mindenképp érdemes átkonvertálnunk zenéinket mp3 formátumba.

 

 

Átkonvertálandó zeneszámok előkészítése

Mielőtt nekiállnánk, készítsük össze a zenefájljainkat, amiket át szeretnénk konvertálni mp3-ba. Tegyük őket külön egy könyvtárba, így később akár kötegelt módon is kényelmesebben konvertálhatjuk őket.

Ebben a példában én a Terminator 2 – flac formátumban lévő – filmzenéjével mutatom be ezt a folyamatot, amiket összekészítettem egy külön könyvtárba:

FLAC formátumban lévő zeneszámok összeállítása

Amint látható a film zeneszámai 2 GB helyet foglalnak, ami elég sok.

Fájlnevek megtisztítása

A fájlnevekkel kapcsolatban még érdemes ejteni egy szót, méghozzá, ahogy a képen is látható, a fájlnevek tartalmazhatnak szóközöket, vagy egyéb speciális karaktereket. Ezeket célszerű átnevezni például "_" karakterekre, vagy törölni őket. Ez a lépés nem kötelező, de később kényelmesebben dolgozhatunk a fájlokkal, ha például nem kell idézőjelek/aposztrófok között hivatkozni a nevekre, stb. Én legalábbis jobban szeretem, amikor fájlokkal dolgozunk, ha nincsenek a nevükben speciális karakterek és szóközök.

Ezek a fájlnevek tartalmaznak szóközöket, aposztrófokat, zárójeleket, vesszőt és & jelet is. Ezeket egyszerűen eltávolíthatjuk néhány lépésben:

Először lecseréljük a szóközöket "_" karakterekre. Ezt legegyszerűbben egy ciklusban hívott tr parancs segítségével végezhetjük el:

for file in *.flac; do mv "$file" "$(echo $file | tr " " "_")" ; done

Ezután pedig eltávolítjuk az aposztrófokat, zárójeleket és az & jeleket:

for file in *.flac; do mv "$file" "$(echo $file | tr -d "'()&,")" ; done

Természetesen, ha a saját fájlneveinkben akadnak ezektől eltérő speciális karakterek, akkor azokat kell betenni a felsorolásba.

A fájlnevek megtisztítása után így néz ki a könyvtárunk:

Fájlnevek tisztítás után

Nem minden fájl nevében volt speciális karakter, azokat ki is írta az mv parancs, hogy nem történt átnevezés. Mennyivel kulturáltabban néznek így ki a fájlnevek. Így már biztosan nem fognak összeakadni semmivel.

Az átalakított fájlnevek miatt sem kell aggódnunk, mert a zenelejátszó programok úgy is az mp3 fájlok ID3 tagjait jelenítik meg, tehát az eredeti címek, előadók, stb fognak látszódni.

Ezután létrehozhatunk egy mp3 alkönyvtárat, amibe irányítjuk az átkonvertált hangfájlokat:

mkdir mp3

Ezzel a zenefájljaink készen is állnak a munkára.

 

Zenefájlok konvertálása flac formátumból mp3-ba

A konvertálást többféleképpen is elvégezhetjük: parancssorban, vagy grafikus felületen is. Nézzünk mindegyikre egy-egy példát.

Konvertálás az ffmpeg paranccsal

 

 

Az ffmpeg parancs egy igen hatékony konvertáló eszköz, amely segítségével video és audio fájlokat konvertálhatunk sok formátum között. az ffmpeg csomag telepítéséhez futtassuk az alábbi apt-get parancsot:

sudo apt-get install ffmpeg

Próba konvertálás

A konvertáláshoz a zene könyvtárunkban maradva futtassuk le próbaképpen a legelső fájlon az ffmpeg műveletet. Nálam tehát:

ffmpeg -i 01_Brad_Fiedel_-_Main_Title_Terminator_2_Theme.flac -acodec mp3 -ac 2 -ab 192k -loglevel error mp3/01_Brad_Fiedel_-_Main_Title_Terminator_2_Theme.mp3
Ha nem tisztítottuk meg a fájlok neveit, akkor tegyük azokat idézőjelek közé!

Ennek a parancsnak a kapcsolói és paraméterei pedig a következőket jelentik:

  • -i: bemeneti fájl
  • -acodec: használandó kodek a konvertáláshoz
  • -ac: audio csatornák száma (pl. sztereó)
  • -ab: audio bitsebesség. Itt a 192 már jó minőséget eredményez. Persze ha eleve gyenge a forrás fájlunk mintavételezése, akkor ettől nem lesz jobb.
  • -loglevel: naplózási szint. Nem kötelező. Ha elhagyjuk, akkor rengeteg számunkra felesleges dolgot fog kiírni a kimenetre. Ennek a kapcsolónak több beállítási szintje is van, erről bővebben a parancs manual oldalán tájékozódhatunk. A példában én az "error" szintet választottam, így csak akkor ír a kimenetre, ha valami hiba történik a konvertálás során.
  • és végül a kimeneti fájlt kell megadnunk.

Nálam néhány másodperc alatt végzett a konvertálással. Ha megvagyunk, ellenőrizhetjük egy zenelejátszóból, hogy valóban a számunkra megfelelő mp3 lett-e belőle (hangminőség, adatok, stb).

MP3 fájlinformációk Winampból

Pontosan azt kaptuk, amit beállítottunk. Valamint, ha még a fájlméretét is megnézzük, akkor az eredeti 75 MB-os flac fájlból nyertünk egy 3 MB alatti mp3 fájlt, ami otthoni zenehallgatásra kiváló minőségű. Ha ennél magasabb minőségben szeretnénk konvertálni, akkor a -ab paraméter értékét emeljük a kívánt szintre. De általában a 192 kbps érték már nagyon jó minőséget eredményez.

Ha minden stimmel, akkor jöhet a kötegelt konvertálás.

Kötegelt konvertálás

Ha több fájlunk van, akkor célszerű itt is automatizálni, mint hogy egyesével megadjuk a fájlok neveit. Ehhez is for-ciklust használunk:

for file in *.flac; do echo "Fájl konvertálása: $file " ; ffmpeg -i "$file" -acodec mp3 -ac 2 -ab 192k -loglevel error "mp3/${file%.*}.mp3" ; done

A parancs több sorba tördelve áttekinthetőbb:

for file in *.flac; do \
  echo "Fájl konvertálása: $file " ; \
  ffmpeg \
    -i "$file" \
    -acodec mp3 \
    -ac 2 \
    -ab 192k \
    -loglevel error \
    "mp3/${file%.*}.mp3" ; \
  done

Itt lényegében annyi történik, hogy a ciklusban először kiiratjuk a konvertálandó fájl nevét, hogy lássuk hol tart a művelet, majd futtatjuk az ffmpeg parancsunkat, a nevek helyére behelyettesítve a ciklus változó, és a végén leszedjük a fájl kiterjesztését, és ".mp3" kiterjesztést fűzünk a végére.

Ezt én még kiegészítettem egy időméréssel is, így a kimenet nálam:

FLAC fájlok kötegelt konvertálása

Az egészet átkonvertálta 1 perc 33 másodperc alatt. Valamint az mp3 könyvtár tartalma összesen 74MB, a 2 GB-nyi flac fájl helyett.

Az elkészült mp3 fájlok

Kötegelt konvertálás párhuzamosítással

 

 

Az előző megoldás is kiváló, viszont annyi hátránya van, hogy csak egy szálon fut az egész konvertálási művelet. Így ha nagyon sok fájlunk van, akkor sok ideig is eltarthat a konvertálás, miközben nincsenek kihasználva a processzormagok. Tehát ha több magos processzorunk van, ami a mai időkben már alap, akkor a konvertálásunkat felturbózhatjuk a parallel parancs használatával.

A parallel csomag nem az alaprendszer része, ezért telepíteni kell:

sudo apt-get install parallel

Ezután pedig átalakíthatjuk az előző konvertáló parancsunkat a következőképpen:

parallel ffmpeg -i {} -acodec mp3 -ac 2 -ab 192k -loglevel error ./mp3/{.}.mp3 ::: ./*.flac
itt a három darab kettőspont ":::" amolyan szeparátor karakterlánc, ezzel jelzi a parallel parancs számára, hogy idáig tart a végrehajtandó feladat, és utána jön a bemenet, jelen esetben a flac fájlok listájával. Tehát itt a for ciklust maga a parallel parancs helyettesíti, ahol a kapcsos zárójelek jelentik a ciklusváltozót, amiben az ffmpeg parancs kapja a soron következő fájl nevét.

A parancs futtatásakor felpörög a "motor", a processzor 100%-on dolgozik, és közben látszik is, hogy minden flac fájlhoz elindította külön szálon az ffmpeg parancsot a kapcsolóinkkal:

Konvertálás a parallel parancs segítségével több szálon - htop

Itt a fehérrel jelzett szálak futnak a fizikai és HT-s magokon (I7-3770 CPU), így tehát nálam összesen 8 szálon megy egyszerre, míg a többi (zöld) várakozik a következő szabad processzormagra.

Persze ezzel nekünk semmi dolgunk nincsen, csak én ilyenkor érdekességképpen be szoktam nézni a htop paranccsal, hogy mi történik a háttérben.

A parancs lefutása után pedig láthatjuk a sebesség különbséget is:

FLAC fájlok konvertálása párhuzamosan a parallel parancs segítségével

Itt 25 másodperc alatt futott le. Amit ha kiszámítunk, akkor 3,72-szer rövidebb idő, mint a korábbi 1 perc 33 másodperc. Így nagyjából ki is jön a 4 fizikai processzormag együttes teljesítménye. A HT-s magok ilyenkor nem sokat számítanak. Érdekességképpen nagyjából hasonló sebességnövekedés volt akkor is, amikor a pigz programmal tömörítettem egyszerre több szálon fájlokat.

 

Konvertálás a SoundConverter grafikus alkalmazással

Ha grafikus felületen szeretnénk elvégezni a flac fájlok mp3-ba történő konvertálását, akkor ideális választás a SoundConverter alkalmazás, ami alig foglal helyet, és a kezelése is egyszerű. A soundconverter csomagot telepítéséhez futtassuk az alábbi parancsot:

sudo apt-get -y install soundconverter

A programot az asztal "start" menüjéből kiindulva a "Hang és vdideó" csoportban találhatjuk meg, "Hangátalakító" néven. Indítsuk el:

SoundConverter főablaka

Fájlok hozzáadása

 

 

Adjuk hozzá a konvertálni kívánt flac fájljainkat. Ezt megtehetjük a fenti Fájl hozzáadása gombbal, vagy egyszerűen csak áthúzzuk a fájlokat egy másik fájlkezelő ablakból:

SoundConverter - Fájlok hozzáadása

Beállítások

Kattintsunk a Beállítások gombra, ekkor előjön a beállító panel, ahol mindent be tudunk állítani egy helyen:

SoundConverter - Beállítások

Itt állítsunk be mindent a saját igényeinknek megfelelően. Erről részletesebben a másik leírásban írtam.

Ha mindent beállítottunk, zárjuk be az ablakot.

Konvertálás

Ha megvagyunk idáig mindennel, akkor jöhet a konvertálás. A főablakon kattinsunk a Konvertálás gombra, ekkor elindul több szálon a folyamat:

SoundConverter - Konvertálás

Majd miután elkészült:

SoundConverter - Konvertálás elkészült

Ugyanazokkal a beállításokkal ez gyorsabban lefutott, mint az egy szálon futó parancssori, de a többszálon futó parancssorinál viszont lassabban készítette el a flac fájlok mp3-ba történő konvertálását. Ennél a grafikus programnál van folyamatjelző is, így sok fájl esetén bármikor rápillantva tudjuk, hogy hol tart.

 

 

Konklúzió

Ezekkel a módszerekkel könnyen és automatizáltan alakíthatjuk át zenéinket a szükséges audio formátumba. Bár ebben a példában csak flac tipusú fájlokat konvertáltunk mp3-ba, azonban mindkét bemutatott módszerrel sok egyéb formátum között is tudunk átalakítani.