Konvertere fra flac til mp3

alt om grafiske brukergrensesnitt (GNOME, KDE, osv.), applikasjoner tett knyttet til disse og multimedia.

Konvertere fra flac til mp3

Innleggav Soerboe » tor 14.05.2009 11:33

Hei.
Musikksamlingen min består av flac-filer og jeg koder alle cd'ene jeg kjøper til flac. Det som er planen er å sette opp en konverteringsrutine, som f.eks. kjøres hver natt (evt. når det skjer endringer i flac-mappa) og som da konverterer de nye cd'ene som er lagt inn fra flac til mp3.
Det jeg har tenkt på er å sette opp en cronjob til å konvertere hver natt, men hvordan jeg kan sjekke om det har kommet nye mapper/filer sliter jeg litt med å finne en løsning på? Noen som vet?

Noen som har noen andre gode idéer å komme med?

Brukerens avatar
medlem i 202 måneder
 

Re: Konvertere fra flac til mp3

Innleggav moma » tor 14.05.2009 18:00

Hei,

Du kan vel bare teste om filnavn.mp3 allerede eksiterer fra før i destinasjonskatalogen. Altså du tar filnavn.flac og lager filnavn.mp3 fra den og tester om filen er allerede konvertert.

F.eks:
filnavn=$(basename $flac_fil)
destin_filnavn=${filnavn%flac}mp3
# Du må også legge til katalognavnet men jeg viser ikke det her.

# Test om $destin_filnavn eksisterer
if [ ! -r "$destin_filnavn" ]; then
# Konverter til mp3.
...
fi
-------------------------

Men du må lage litt mer avansert løsning hvis du er redd for at filene kan bli duplikate. Altså hvis flere CDer inneholder samme filnavn.

Da må du bruke flaggfil og legge til MD5SUM i filnavnet.
Her lager jeg en katalog hvor jeg putter en tom flaggfil for hver eneste konverterte musikkfil.

F.eks hvis musikkfilen heter "musikkfil1.flac".

Flaggfilen i $HOME/flac-flagg/ vil hete:
musikkfil1.flac.7c0a1915d1f7f58905e0302ba0239c2e

Hvor 7c0a1915d1f7f58905e0302ba0239c2e er md5sum av musikkfilen.

Kode: Merk alt
#!/bin/bash

# Katalogen FLAGG_KATALOG inneholder en flagg(fil) for hver ferdig konvertete flac (musikk) fil.
# Flaggfilen har formatet filnavn.md5sum.
# Lag katalog.
FLAGG_KATALOG=$HOME/flac-flagg/
mkdir $FLAGG_KATALOG  1>&2 2>/dev/null

# Dine musikk filer i flac format.
MIN_FLAC_KATALOG=$HOME/dine-flac-filer

cd $MIN_FLAC_KATALOG
find . -type f -name "*flac" | while read fil
do
   # Sjekk om denne filen er blitt prosessert tidligere.
   NAVN=$FLAGG_KATALOG/$(basename "$fil")
   MD5SUM=$(md5sum "$fil" | cut -d' ' -f1)

   FLAGG_FIL="$NAVN.$MD5SUM"

   #Sjekker flagg filen   
   echo "Sjekker $FLAGG_FIL"

   if [ -r "$FLAGG_FIL" ]; then
      echo "$fil er allerede konvertert."
      continue
   fi

   # Konverter "$fil" til mp3


   # Lag flaggfil.
  touch "$FLAGG_FIL"

done

--------------------

Jeg tenkte også at filsystemets archive-bit kunne brukes som flagg men det vil kollidere med backup-systemer (som også setter archive-bit for å implementere inkrementelle backup).

Erfaren
Brukerens avatar
medlem i 234 måneder
 

Re: Konvertere fra flac til mp3

Innleggav geirendre » tor 14.05.2009 20:03

Sikkert mange måter å løse det på, her er noen forslag:

1. Lagre nye mapper/filer i en egen "Ny-mappe" som cron kan sjekke i,
og så flytte filene til endelig målmappe ifm. konverteringsjobben.

2. Bruk kommandoen find til å finne filer "nyere" enn 1 dag.
Kode: Merk alt
find . -type f -name "*.flac" -ctime -1 -print0 | xargs -0 ls -l
Obs dette er psedo-kode, bare som eksempel.
man find for detaljer ;)
og -ctime er altså IKKE creation-time for filen som man skulle tro,
men er tid for siste gang filen ble endret.
I ditt tilfelle vil vel det samsvare med når filen ble opprettet.

3. La cron-jobben din lage en mappeutlisting etter utført konvertering,
Kode: Merk alt
ls -l /sti/til/flacfiler > filoversikt.txt
som den da kan bruke nestegang det kjører for å
sammenligne innholdet i mappen mot.
:-)

Erfaren
Brukerens avatar
medlem i 229 måneder
 

Re: Konvertere fra flac til mp3

Innleggav Soerboe » tor 14.05.2009 21:48

Takk for gode svar og forslag!

Jeg begynte å lage en kode før jeg fikk noen svar her og det viste seg at geirendres 3. forslag var omtrent det jeg hadde begynt på.

Jeg legger filene mine inn i mapper med artist og så album inni artistmappa. Så systemet er ganske greit. Jeg lager en utskrift av mappene i mp3- og flac-mappa og sammenligner disse og finner da hvilke mapper som ikke finnes i mp3-mappa.

Til nå ser det ut til å fungere greit, men har ikke konvertert filene enda. Bare prøvd om systemet fungerer.

Ved det oppsettet jeg har laget fungerer det ikke med "løse" mp3-filer som ikke ligger i mappestrukturen jeg har lagt opp til. Jeg har ikke bruk for det nå, men kanskje jeg kan legge det til senere og da må jeg nok bruke en av de andre forslagene dere kommer med.

Positivt med å bruke det systemet jeg har nå er at det er ganske enkelt å lage mapper til artist og album i mp3-mappa. Tror ikke mp3-konverteringen gjør dette. Gjerne si at jeg har feil :)

Hva bruker dere til å konvertere musikkfiler? Jeg har ikke funnet så enkle løsninger ennå. Har dere noen tips?

Brukerens avatar
medlem i 202 måneder
 

Re: Konvertere fra flac til mp3

Innleggav janerikb » fre 15.05.2009 1:34

For å konvertere fra flac til mp3 bruker jeg
for file in *.flac; do $(flac -cd "$file" | lame -h - "${file%.flac}.mp3"); done
medlem i 222 måneder
 

Re: Konvertere fra flac til mp3

Innleggav Soerboe » fre 15.05.2009 2:26

Nå har jeg første utkast til kode klar. Den ser ut til å fungere flott på testfilene - har ikke sluppet den løs på hele samlinga mi ennå :)

Den fungerer slik:
Sammenligner mappetreene i flac og mp3-mappa og finner mapper som ikke er lagt inn i mp3-mappa. Så går den gjennom en løkke der en artist- og albummappe blir laget for mappene som mangler, og så konverteres alle flac-filene i den spesifikke mappa til mp3 i den tilsvarende artistmappa i mp3-mappa. id3-tags blir også lagt på.

Her er koden: (sikkert mange ting som kunne vært skrevet enklere, men men. Gjerne kom med tips :))
Kode: Merk alt
#!/bin/bash

# full sti
flac_dir=/dagh/programmering/bash/test2/flac/
mp3_dir=/dagh/programmering/bash/test2/mp3/

# finner hvilke filer som finnes
cd "$flac_dir"
find -mindepth 2 -type d | sort > temp1
cd "$mp3_dir"
find -mindepth 2 -type d | sort > temp2

# finner flac-filer som ikke er konvertert
grep -v -f "${mp3_dir}temp2" "${flac_dir}temp1" | awk '{l=length($0)+1; print substr($0,3,l);}' > filer

# setter tellere
ant_album=`cat "${mp3_dir}filer" | wc -l`
nr_album=1

cat "${mp3_dir}filer" | while read fil;
do
  # skriver ut info
  echo "-----"
  echo "| Konverterer \"${fil}\" som er album $((nr_album++)) av ${ant_album}" 
  echo "-----"

  # lag artistmappe
  martist=`echo $fil | awk -F / '{print $1}'`
  if [ ! -d "$martist" ]
  then
    mkdir "$martist"
  fi
  cd "$martist"
  # lag albummappe
  malbum=`echo $fil | awk -F / '{print $2}'`
  mkdir "$malbum"
  cd "${flac_dir}${fil}"

  # konverterer filer
  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 -V 1 --vbr-new - "${mp3_dir}${fil}/${OUTF}"
       id3v2 -t "$TITLE" -T "$TRACKNUMBER" -a "$ARTIST" -A "$ALBUM" -g "$GENRE" -y "$DATE" "${mp3_dir}${fil}/${OUTF}"
  done

  cd "$mp3_dir"
done

# sletter midlertidige filer
rm ${flac_dir}temp1
rm ${mp3_dir}temp2
rm ${mp3_dir}filer

echo "-----"
echo "| Konvertering ferdig."
echo "-----"


Vet forresten noen noe om hvordan utviklingen er for flac? Er det en gammel og utdatert filtype som ikke er vedlikeholdt lenger? Jeg lurer siden det er ganske lenge siden den nåværende versjonen kom ut.

Brukerens avatar
medlem i 202 måneder
 

Re: Konvertere fra flac til mp3

Innleggav sokkalf » fre 15.05.2009 13:52


Brukerens avatar
medlem i 208 måneder
 

Re: Konvertere fra flac til mp3

Innleggav Soerboe » fre 15.05.2009 14:53

sokkalf skrev:Sjekk ut http://mp3fs.sourceforge.net/


Jeg leste litt om det før jeg bestemte meg for å konvertere alle filene. Grunne til det er at jeg har en ganske gammel pc der prosessoren ikke er av de raskeste og derfor tar det litt tid å konvertere fra flac "on the fly". Harddiskplass har jeg derimot nok av, så kan heller ha to versjoner i hver sin filtype :)

Men takk for tipset. Kanskje det blir aktuelt når jeg kjøper en ny 4 kjerners-prosessor :-D

Brukerens avatar
medlem i 202 måneder
 

Re: Konvertere fra flac til mp3

Innleggav geirendre » fre 15.05.2009 21:56

Litt "of topic" men spør nå alikevel....
Er det noe å hente på å konvertere fra CD-plate til FLAC fremfor MP3?
Trodde CD kvaliteten var såpass laber at MP3 var nok, og at det ikke var
noe å hente på "bedre" encodere som FLAC.

Litt mere "of topic" hehe, ;)
Funksjoner som: normalize eller mp3gain kan vel også være
verdt å sjekke ut. De skal gjøre et forsøk på å sette lydnivået likt i alle mp3-filene.
Kjekk funksjon når man kopierer fra mange CDer der det gjerne er
ganske stor individuel forskjell i lydstyrken mellom de forskjellige platene.

Erfaren
Brukerens avatar
medlem i 229 måneder
 

Re: Konvertere fra flac til mp3

Innleggav Soerboe » man 18.05.2009 13:29

Rent teknisk sett så har jeg ikke peiling på selve mp3- og flac-konverteringen, men i mitt hode så synes det logisk at når et spor på cd'en med stor filstørrelse blir konvertert ned til en fil med mindre filstørrelse, så går det bort informasjon. Flac sies jo å være et "lossless" filformat, altså at informasjon ikke skal forsvinne, så jeg stoler litt på det og på filstørrelsen i dette tilfellet :)

Kanskje andre har et litt mer teknisk utgangspunkt til å svare?

PS: funksjonene du nevner virker greie de, men jeg selv har aldri opplevd problemer i forhold til lydnivå.

Brukerens avatar
medlem i 202 måneder
 

Re: Konvertere fra flac til mp3

Innleggav sokkalf » tir 19.05.2009 8:12

Stemmer at FLAC er lossless.
Dvs. at ved konvertering fra CD -> FLAC vil ingen informasjon gå tapt.
FLAC egner seg dermed godt til å "transcode" videre fra, til f.eks mp3, ogg, etc.

Jobber selv med å få mesteparten av samlingen over på FLAC, og har mountet en "mp3"-katalog oppå FLAC-filene vha. mp3fs. Slik har jeg filer til bruk både på stereoanlegget hjemme og på mp3-spilleren.

Brukerens avatar
medlem i 208 måneder
 


Returner til Skrivebord / Multimedia



Hvem er i Forumene

Registrerte brukere: Google [Bot]



cron