Vai al contenuto
Melius Club

Conversione batch da flac a mp3


Messaggi raccomandati

Inviato

Ciao, il mio lettore USB della macchina riconosce solo mp3.

Vorrei fare una conversione di qualche migliaio di brani da flac a mp3.

Mi sapreste suggerire qualche tool adatto, possibilmente per mac?

Grazie

Inviato

XLD, xACT o al limite fre:ac (si chiama proprio così, con i due punti). Tutti hanno la possibilità di sfruttare le CPU multicore, convertendo più file contemporaneamente. Se ne devi convertire parecchi tieni conto che il computer, soprattutto se un portatile, scalderà parecchio, assicurati che ci sia ricircolo d'aria attorno.

Inviato

Confermo XLD su mac, comodissimo proprio per i batch

Lo imposti e poi trascini la cartella dei file sull’icona xld nel dock. A quel punto fa tutto da solo

Inviato
2 ore fa, UpTo11 ha scritto:

XLD, xACT o al limite fre:ac

Questi sono tutti e 3 free.

Quando devo convertire tanti file in diverse cartelle mi faccio una copia da qualche parte, nella cartella principale cerco ".flac" nella casella di ricerca del Finder, scelgo "Audio FLAC" nel menù che compare, una volta che ho la lista dei file Cmd+A per selezionarli tutti e infine click col pulsante destro del mouse -> "Apri con" e seleziono XLD. Mi faccio una copia delle cartelle perché ho attivato l'opzione di rimuovere i file originali una volta convertiti. In questo modo converto tutto in mp3 conservando la stessa struttura delle cartelle, che per me è più comodo.

  • Thanks 1
Inviato

Ciao,

da riga di comando è molto semplice.

 

Io solitamente lo faccio da Linux, ma credo che tu possa fare la stessa cosa anche da MAC, puoi usare anche un raspberry, ma ovviamente ci vorrà più tempo.

 

Puoi installare il programma ffmpeg per la conversione, se vuoi ti passo il comando che mi sono fatto io.

  • 2 settimane dopo...
Inviato

@franz159 Certo!

Guarda questo te l'ho fatto al volo, non ho avuto modo di provarlo, provalo e fammi sapere.

#!/bin/bash
SAVEIFS=$IFS
export IFS=$'\n'
for file in $(find . -name "*.flac"); do
  IFS=$SAVEIFS
  echo "Converting file $file..."
  ffmpeg -i "$file" -q:a 0 -map_metadata 0 -id3v2_version 3 "${file%.flac}.mp3"
  cd - > /dev/null
done

 

In pratica se lo lanci da una directory, lui da li in giù converte tutti i file mp3 che trova (mettendoli nello stesso path degli originali).

Se vuoi cambiare destinazione fammi sapere che modifichiamo.

  • Thanks 1
Inviato

@foreman Grazie  MOLTISSIMO, va benissimo.... appena riesco provo e ti faccio sapere, ma dovrei riuscire a cavarmela....

Inviato
56 minuti fa, foreman ha scritto:

cd - > /dev/null

Questa riga non mi torna. Non cambia directory in precedenza, perché dovrebbe tornare alla directory precedente ad ogni iterazione?

Inviato

@UpTo11 hai ragione, non serve! Ho fatto copia e incolla tra due script e mi è rimasto quel refuso!

Inviato

@foreman qualche piccolo aggiustamento in termini di logging e per forzare l'output a 44100, ma adesso ho lo script pronto!

Testato su un folder con subfolders per circa 400 files.

Grazie ancora!!!

Domani comincio il processing di 832Gb di musica "leggera". (ma rigorosamente non "leggerissima" 🙂 ).... vediamo un po' come va!

 

Inviato

Alla faccia!

Ripensadoci, forse sarebbe comodo creare i file convertiti una cartella di output mantenendo alperatura originale.

Se non erro nelle opzioni si ffmpeg che ti ho passato crea un file a bitrate variabile.

 

Quando hai trovato la "quadra" direi di pubblicarlo qui, così magari anche altri utenti possono giovarne.

Inviato
5 ore fa, franz159 ha scritto:

per forzare l'output a 44100

 

Trattandosi di MP3 potrebbe essere pignoleria, ma occhio che il resampler predefinito di ffmpeg non è il massimo e se non ricordo male non applica il dithering di default. Puoi attivare il resampler soxr in ffmpeg che supporta anche il dithering:

 

-af aresample=44100:resampler=soxr:precision=28:osf=s16:dither_method=triangular

 

Come dither_method poi scegliere anche lo shibata.

Sarebbe da capire però se i file già a 44100 sono passati invariati dal resampler/dithering, ad esempio provando con e senza sullo stesso file e confrontando l'output.

 

Infine, si potrebbero sfruttare più core della CPU lanciando diverse conversioni in parallelo. Quando posti il comando finale posso provare a darci un'occhiata in questo senso.

Inviato

Allora, per convertire più file contemporaneamente, sfruttando le CPU multicore, è possibile usare GNU parallel da linea di comando. È uno script di perl che si può installare facilmente su qualsiasi Linux, Windows (Cygwin) o Mac (MacPorts, Brew, ecc...).

È possibile scegliere quanti processsi di conversione eseguire contemporaneamente con l'opzione -j N di parallel. Se non viene specificata parallel esegue un numero di processi di conversione pari al numero di core presenti sulle CPU. Nei miei esempi qui sotto ne uso 4 (-j 4 nella riga di comando).

La conversione si riduce ad una unica linea di comando da eseguire nella cartella principale, quella che contiene i file FLAC, anche organizzati in sottocartelle. Il comando conserva comunque la struttura delle cartelle.

 

La prima versione che vi mostro converte i file salvando gli MP3 in una directory diversa da quella dei file FLAC, ma mantenendo comunque la struttura delle cartelle. I file FLAC originali sono conservati, non vengono rimossi. Ad esempio se i FLAC da converitre si trovano in una cartella di nome FLAC, i file MP3 saranno creati in una cartella di nome MP3 a fianco della FLAC:

 

cd /percorso/alla/cartella/FLAC
OUTDIR="../MP3"
find . -type f -iname "*.flac" -print0 | parallel -0 --eta -j 4 -a - "[ -d ${OUTDIR}/{//} ] || mkdir -p ${OUTDIR}/{//} ; ffmpeg -v 8 -i {} -vn -dn -sn -q:a 0 -c:a libmp3lame -map_metadata 0 -id3v2_version 3 ${OUTDIR}/{.}.mp3"

 

Modificando la variabile OUTDIR potete creare i file MP3 dove vi è più comodo.

 

La seconda versione invece, converte i file FLAC in MP3 nella stessa cartella, cancellando i FLAC una volta convertiti. Quindi il risultato finale avrà la stessa struttura delle cartelle, ma file MP3. Questa versione conserva qualsiasi altro tipo di file presente, ad esempio immagini di copertina, libretti PDF, CUE sheet, ecc...:

 

cd /percorso/alla/cartella/FLAC
find . -type f -iname "*.flac" -print0 | parallel -0 --eta -j 4 -a - "ffmpeg -v 8 -i {} -vn -dn -sn -q:a 0 -c:a libmp3lame -map_metadata 0 -id3v2_version 3 {.}.mp3 && rm -f {}"

 

Le ho testate entrambe su circa 50 GB di file FLAC, oltre 3200 file in totale.

Gli argomenti del comando di conversione con ffmpeg possono essere modificati a piacere, ad esempio forzando il resampling come accennato nei post precedenti.

Inviato

@UpTo11 Grazie ancora per tutti gli input.

Alla fine, per ora, ho usato lo script inizialmente fornitomi da @foreman con le poche modifiche che ho indicato qualche post addietro.

Per riferimento lo trovate qui:

http://www.francescomoretta.com/foto/varie/melius/convert2mp3.sh.txt

Per eseguirlo, va ovviamente tolto il ".txt" finale dal nome, aggiunto solo per facilità di visualizzazione da web.

Lo lancio nel folder "padre" così per conservare standard output e standard error in  un log:

 

./convert2mp3.sh > convert2.log 2>&1

Ho creato una copia iniziale della struttura di folder da convertire (praticamente /folder-iniziale/artista/album) in un altro folder, così da poter cancellare ogni flac non appena convertito in mp3.

Il tutto è in "cottura"...

Ieri, in 9h 30 minuti, dalle 9:30 am alle 19:00 ho convertito sul mko mac i primi 12987 file, circa 22 al minuto.

Oggi secondo round, 1478 conversioni so far... 🙂 

 

 

Crea un account o accedi per lasciare un commento

Devi essere un membro per lasciare un commento

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora
  • Notizie

  • Badge Recenti

    • Contenuti Utili
      Capotasto
      Capotasto ha ottenuto un badge
      Contenuti Utili
    • Contenuti Utili
      fabio76
      fabio76 ha ottenuto un badge
      Contenuti Utili
    • Ottimi Contenuti
      landi34
      landi34 ha ottenuto un badge
      Ottimi Contenuti
    • Badge del Vinile Verde
      landi34
      landi34 ha ottenuto un badge
      Badge del Vinile Verde
    • Membro Attivo
      thewall
      thewall ha ottenuto un badge
      Membro Attivo
×
×
  • Crea Nuovo...