2019. február 20., szerda

Gyorskeresés

Útvonal

Cikkek » Számtech rovat

FLAC-ból MP3 terminálon

  • (f)
  • (p)
Írta: |

Két egyszerű script, amivel egyszerűvé, kényelmessé, automatizálttá, gyorssá lehet tenni a műveletet.

[ ÚJ TESZT ]

Biztos vagyok benne hogy a Logout olvasóinak nagy része tart otthonában valamilyen *NIX alapú számítógépet.

Ezt az elméletet támasztja alá hogy elég sok *NIX telepítéssel, konfigurálással, és egyéb okosítással foglalkozó cikket lehet olvasni a Logout hasábjain.

A következő néhány sorban két darab egyszerű scriptet szeretnék bemutatni, amelyek segítségével egyszerűbbé, kényelmesebbé, gyorsabbá, sőt, akár automatizálttá is lehet tenni FLAC fájlok MP3 formátumba történő konvertálását.

Mivel próbálom kiszűrni az id-10t hibákat, az irományban helyenként szájbarágósan és terjengősen kifejtem a miértet, hátha így könnyebb megérteni a hogyant. Kérem azokat akik számára ezek a részek triviális információt hordoznak, olvassanak tovább, és emlékezzenek rá, hogy egyszer ők is voltak kezdők.

Ehhez első körben három darab csomagra lesz szükségünk: flac, lame, id3.

Mindenki vérmérsékletéhez és tudásához mérten döntse el hogyan kívánja ezeket beszerezni. Nem szeretnék részletesen kitérni rá hogy hogyan lehet forráskódból fordítani ezeket. Aki erre vetemedik, annak nyilván nem is lenne szüksége segítségre, esetleg támpontokra:

A FLAC forráskódja http://flac.sourceforge.net/download.html innen tölthető le
A LAME forráskódja http://lame.sourceforge.net/download.php innen tölthető le
Az id3lib forráskódja http://sourceforge.net/projects/id3lib/files/ innen tölthető le

Ha valaki mégis próbálkozna a forráskódból fordítás művészetével, ami amúgy egy dicséretes dolog, a make csomagra szüksége lesz mindenképpen. A make tartozéka minden *NIX operációs rendszernek, viszont a legtöbb disztró nem telepíti, így ezt kézzel kell megtennünk, ha eddig még nem volt rá szükség. Alapvetően a legtöbb dolgot az alábbi három utasítással le lehet forgatni:

$ ./configure
$ make
# make-install

Gyengébbek kedvéért: hogy ez működjön először át kell lépni abba a könyvtárba ahol a forráskód van.

Érdemes arra odafigyelni hogy a make képes kihasználni a többmagos processzorokat. Hogy hány szálon dolgozhat a -j N paraméterrel lehet szabályozni ahol N a szálak száma. Általában az optimális teljesítmény érdekében érdemes N-nek a processzor magjainak/processzorok számánál egyel magasabb értéket választani. Kétmagos/kétprocesszoros rendszer esetén: make -j 3

Mellesleg ez egy nagyon leegyszerűsített formája a make használatának, erősen javasolt a make man fájljának az elolvasása. Ezt a $ man make utasítással lehet előcsalni.

Kevésbé haladó felhasználók pedig telepítsék fel a disztrójuknak megfelelő csomagkezelővel. Mivel eléggé általános csomagokról van szó, valószínű hogy az alapértelmezett repókból elérhetőek. Ha mégsem frissítsük a csomaglistát Ez minden telepítés előtt javasolt. Ha a frissítés után sem tudjuk telepíteni látogassunk el a disztrónk csomagkezelőjének a weboldalára, és próbáljunk alternatív tárolókat keresni, de esélyes hogy ez csak nagyon elvont rendszerek esetén fordul elő.

Kis cheatsheet ide is:

Debian/Ubuntu és egyéb Aptitude csomagkezelővel dolgozó disztrók esetén:

$ sudo apt-get install flac lame id3

Arch GNU/Linux és egyéb Pacman csomagkezelővel dolgozó disztrók esetén:

$ sudo pacman -S flac lame id3

RedHat/CentOS/Fedora és egyéb YUM csomagkezelővel dolgozó disztrók esetén:

$ sudo yum install flac lame id3

Gentoo és egyéb Portage csomagkezelővel dolgozó disztrók esetén:

$ sudo emerge flac lame id3

Nagyon kezdők kedvéért a $ azt jelöli hogy ezt az utasítást mint nem root user kell kiadni. Ha az utasítást mint root user futtatjuk akkor # van előtte, pontosan úgy mint ahogy a terminálban látjuk. Ha rootként vagy bejelentkezve a gépre - mellesleg a root felhasználót mindennapi dolgokra használni nem annyira jó ötlet, valamint ha az internet felé is látszik a host mondjuk ssh-n keresztül, érdemes a root usertől megvonni a bejelentkezési jogokat - akkor értelemszerűen a sudo utasításra nincs szükség, mivel az effektív root jogokat ad a következő parancs futtatásához. Gyengébbek kedvéért: a $ és a # karaktereket nem kell begépelni (-:

TIPP: Ha nem root userként vagy bejelentkezve, és lemaradt a sudo, és nincs kedved begépelni mégegyszer az utasítást használd a következőt: $ sudo !! A két felkiáltójel - bang - megismétli az előző utasítást, míg a sudo effektív root jogokkal futtatja a !! által jelölt parancsot. A legtöbb esetben - amennyiben a hély Bourne Again Shell - bash - a "fel" nyíl megnyomásával visszakapjuk a korábbi utasítást, és innen a sor elejére begépelni a sudo-t lehet hogy egyszerűbb, de mi van akkor ha egy butább soros konzolon, sh/csh/ksh héjban, vagy olyan billentyűzeten dolgozunk amin nincsenek nyilak? (-:

Ha a szükséges csomagokat mind beszereztük, hozzunk létre egy fájlt, majd az alábbi sorokat írjuk bele kedvenc szövegszerkesztőnkkel.

Aki nem ismerős annyira a héjprogramozás világában ne próbálkozzon kapásból emacs, vagy vi szintű szövegszerkesztővel. A legtöbb disztrón elérhető a nano, mely lényegesen felhasználóbarátabb mint a fent említett két nagyágyú. Ha létrehoztuk a fájlt - $ touch flaconvert.sh (kiterjesztés opcionális) - a $ nano flaconvert.sh utasítással nyithatjuk meg a fájlt. Ha beleírtuk amit kellett, a CTRL+O billentyűkombinációval menthetünk, majd a CTRL+X kombinációval léphetünk ki. Természetesen ha kilépés előtt nem mentettük el a fájlt, visszakérdez

#!/bin/bash

for a in *.flac

do
OUTF=`echo "$a" | sed s/\.flac$/.mp3/g`

ARTIST=`metaflac "$a" --show-tag=ARTIST | sed s/.*=//g`
TITLE=`metaflac "$a" --show-tag=TITLE | sed s/.*=//g`
ALBUM=`metaflac "$a" --show-tag=ALBUM | sed s/.*=//g`
GENRE=`metaflac "$a" --show-tag=GENRE | sed s/.*=//g`
TRACKNUMBER=`metaflac "$a" --show-tag=TRACKNUMBER | sed s/.*=//g`
DATE=`metaflac "$a" --show-tag=DATE | sed s/.*=//g`

flac -c -d "$a" | lame -m j -q 0 --vbr-new -V 0 -s 44.1 - "$OUTF"
id3 -t "$TITLE" -T "${TRACKNUMBER:-0}" -a "$ARTIST" -A "$ALBUM" -y "$DATE" -g "${GENRE:-12}" "$OUTF"

done

Ha ezzel megvagyunk, tegyük mindenki számára futtathatóvá a scriptet:

$ chmod a+x flaconvert.sh

Majd helyezzünk el egy másolatot a /usr/local/bin könyvtárban:

# cp flaconvert.sh /usr/local/bin

És gépeljük be a következő utasítást:

$ PATH=$PATH:/usr/local/bin

Ha ezzel is megvagyunk, már csak a .bashrc fájlunkat kell egy csöppet módosítani, a végére fűzzük hozzá az alábbi sort:

export PATH=$PATH:/usr/local/bin

Ha ezzel végeztünk, nincs más hátra, mint kipróbálni hogy "muzsikál" a scriptünk. Ehhez mindössze annyit kell tennünk hogy átlépünk abba a könyvtárba ahol a flac fájljaink találhatóak, és kiadjuk a következő utasítást:

$ flaconvert.sh

Ha van írás jogunk a könyvtárra, és mindent jól csináltunk akkor a flac, lame, és id3 nagyon bőbeszédű kimenetét láthatjuk a terminálon. Valami hasonlót mint ez:

flac 1.2.1, Copyright (C) 2000,2001,2002,2003,2004,2005,2006,2007 Josh Coalson
flac comes with ABSOLUTELY NO WARRANTY. This is free software, and you are
welcome to redistribute it under certain conditions. Type `flac' for details.

06. Pruitt Igoe.flac: WARNING, cannot check MD5 signature since it was unset in the STREAMINFO
06. Pruitt Igoe.flac: done
LAME 3.98.4 64bits (http://www.mp3dev.org/)
Using polyphase lowpass filter, transition band: 19383 Hz - 19916 Hz
Encoding <stdin> to 06. Pruitt Igoe.mp3
Encoding as 44.1 kHz j-stereo MPEG-1 Layer III VBR(q=0)
Title : Pruitt Igoe Artist: Philip Glass
Album : Koyaanisqatsi Year: 2009, Genre: Soundtrack (24)
Comment: Track: 6

Egy alternatív script:

#!/bin/bash
find "$1" -name *.flac -print0 | while read -d $'\0' IF
do
OF=`echo "$IF" | sed s/\.flac$/.mp3/g | sed s,"$1","$2",g`
echo "$IF" "->" "$OF"
mkdir -p "${OF%/*}"

ARTIST=`metaflac "$IF" --show-tag=ARTIST | sed s/.*=//g`
TITLE=`metaflac "$IF" --show-tag=TITLE | sed s/.*=//g`
ALBUM=`metaflac "$IF" --show-tag=ALBUM | sed s/.*=//g`
GENRE=`metaflac "$IF" --show-tag=GENRE | sed s/.*=//g`
TRACKNUMBER=`metaflac "$IF" --show-tag=TRACKNUMBER | sed s/.*=//g`
DATE=`metaflac "$IF" --show-tag=DATE | sed s/.*=//g`

flac -c -d "$IF" 2> /dev/null | lame -m j -q 0 --vbr-new -V 0 -s 44.1 - "$OF" 2> /dev/null
id3 -t "$TITLE" -T "${TRACKNUMBER:-0}" -a "$ARTIST" -A "$ALBUM" -y "$DATE" -g "${GENRE:-12}" "$OF"
done

Ez a script két paramétert vár, az első a forráskönyvtár, a második pedig a kimenet. Értelemszerűen a forráskönyvtárban keresi a .flac fájlokat, és a kimenet könyvtárba menti az újonnan létrehozott .mp3 fájlokat. Például:

$ flaconvert.sh /storage/music/hi-fi/ /storage/music/lo-fi/

A második script érdekesebb abból a szempontból hogy egy későbbi hack során fel fogom használni...

A leírás eredetije elérhető itt: https://wiki.archlinux.org/index.php/Convert_Flac_to_Mp3. És természetesen a GNU Free Document License 1.2 szabályait figyelembe véve továbbterjeszthető mind az eredeti, mind az én forkom.

Kritikát, hideget - meleget őszintén várom.

Maximális tisztelettel: estol

Hirdetés

Hirdetés

Copyright © 2000-2019 PROHARDVER Informatikai Kft.