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:
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:
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
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).
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:
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.
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
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:
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:
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:
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:
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:
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:
Majd miután 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.
- A hozzászóláshoz regisztráció és bejelentkezés szükséges
- 205 megtekintés