Daphile e file m4a

Progetti, domande e idee sparse sull'autocostruzione di sorgenti digitali per musica "liquida" basate su computer o sistemi dedicati, interfaccie digitali, DAC, ecc.
Rispondi
samhorn
sostenitore
Messaggi: 675
Iscritto il: 24 gen 2011, 19:23
Been thanked: 1 time

Daphile e file m4a

Messaggio da samhorn »

Ciao ho installato daphile versione 17.05 x86_64 su futro ho messo sul nas nuovi file provenienti da rippate mac sono in formato m4a loseless a varie sample e bit, il daphile non li digerisce :sad:
Qualcuno ha esperienze simili? Come devo fare per vedere un debug per capire cosa succede?
Simone
Avatar utente
UnixMan
sostenitore
Messaggi: 12086
Iscritto il: 27 ott 2005, 22:34
Località: L'Aquila (Italy)
Has thanked: 77 times
Been thanked: 47 times

Re: Daphile e file m4a

Messaggio da UnixMan »

samhorn ha scritto: sono in formato m4a loseless
m4a... lossless? sicuro? Se lo è, si tratta di ALAC in contenitore MPEG-4:

https://en.wikipedia.org/wiki/MPEG-4_Pa ... ersus_.M4A

ALAC è un formato proprietario Apple, che per ovvi motivi non è supportato. Se effettivamente sono lossless, devi convertirli in FLAC.
Ciao, Paolo.

«Se tu hai una mela, e io ho una mela, e ce le scambiamo, tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
samhorn
sostenitore
Messaggi: 675
Iscritto il: 24 gen 2011, 19:23
Been thanked: 1 time

Re: Daphile e file m4a

Messaggio da samhorn »

si m4a è solo il contenitore,vlc su ubuntu li legge senza problemi, i file sono troppi per convertirli in flac..
Simone
Avatar utente
UnixMan
sostenitore
Messaggi: 12086
Iscritto il: 27 ott 2005, 22:34
Località: L'Aquila (Italy)
Has thanked: 77 times
Been thanked: 47 times

Re: Daphile e file m4a

Messaggio da UnixMan »

Fai uno script e convertili in batch...
Ciao, Paolo.

«Se tu hai una mela, e io ho una mela, e ce le scambiamo, tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
samhorn
sostenitore
Messaggi: 675
Iscritto il: 24 gen 2011, 19:23
Been thanked: 1 time

Re: Daphile e file m4a

Messaggio da samhorn »

Paolo mi daresti una mano a fare uno script per transcodare questi files?
Io uso regolarmente linux, lo so installare e anche compilare qualche programma seguendo gli readme interni... ma creare script no...
Cosa faresti tu? Io ho un hd usb pieno di file m4a che vorrei convertire in flac tale e qualebitrate e samplefreq...
Da dove parto?
Simone
Avatar utente
UnixMan
sostenitore
Messaggi: 12086
Iscritto il: 27 ott 2005, 22:34
Località: L'Aquila (Italy)
Has thanked: 77 times
Been thanked: 47 times

Re: Daphile e file m4a

Messaggio da UnixMan »

samhorn ha scritto:Paolo mi daresti una mano a fare uno script per transcodare questi files?
per prima cosa, installa pacpl. Se usi Debian o Ubuntu (o derivate), basta che dai il comando:

Codice: Seleziona tutto

apt-get install --install-recommends --install-suggests  pacpl
Installa anche "mediainfo" (se vuoi, eventualmente anche "mediainfo-gui") nonché sndfile-programs, libav-tools e/o ffmpeg, ecc:

Codice: Seleziona tutto

apt install mediainfo flac shntool libav-tools ffmpeg sndfile-programs
(ovviamente questi comandi li devi dare come utente root, perciò usa "sudo" o "su").

Una volta completata l'installazione di pacpl, delle sue dipendenze (che includono i vari transcoder) e degli altri pacchetti, dai una occhiata al manuale:

Codice: Seleziona tutto

man pacpl
Ad es., potresti dare banalmente il comando:

Codice: Seleziona tutto

pacpl --to flac --only m4a -r -p --delete -v  /archivio_m4a  --outdir /archivio_flac
e, alla fine (se tutto va bene), nella directory di destinazione (--outdir) ti dovresti ritrovare con tutti i files m4a convertiti in flac, all'interno di un albero di directory uguale a quello di partenza.

Ma! Occhio però che pacpl converte tutto a prescindere, ad es. non verifica se il file che sta convertendo sia lossless o lossy... il che non sarebbe affatto una bella cosa se per sbaglio tra gli m4a lossless (ALAC) ne hai anche qualcuno lossy. Quindi nel caso ti conviene verificare prima con "mediainfo" che tutti i files che vuoi convertire siano effettivamente lossless.

Una possibilità per evitare questo problema è, ancora una volta, ricorrere ad uno script.

Parecchio tempo addietro scrissi una serie di script per un problema simile (convertire un intero archivio musicale dove nel tempo si era accumulato un guazzabuglio con po' di tutto verso file flac divisi per singola traccia). Però non avevo nessun m4a/alac, quindi il supporto per quelli non lo avevo incluso ed è da aggiungere.

Lo script che converte un intero albero è questo:

ConvertAudioTree.sh

Codice: Seleziona tutto

#!/bin/bash
my_name=`basename "$0"`
target="$1"
[ "$target" == "." ] && target="$PWD"
log_file="ConvertAudioTree.log"

if ! [ -d "$target" ]; then
  echo "usage: $my_name dir_name"
  exit 1
fi

echo -e "\nWill convert all lossless audio files under \"${target}\" "
echo -e "to single-track FLAC format files.\n"
#read -p "Press Enter to continue, Ctrl+C to quit..."
#echo -e "\nOK, processing target tree.\n"

echo "$my_name" >> ${log_file}
echo "Date: `date`" >> ${log_file}
echo -e "Processing ${target}\n" >> ${log_file}

find "$target" -depth -type d -not -name "done" -execdir any2flac.sh "{}" \; 2>&1 | tee -a ${log_file}

echo -e "\n`date`\ndone.\n\n" >> ${log_file}
come puoi vedere, questo non fa altro che chiamare un altro script (any2flac.sh) per ciascuna subdir che incontra. :)

any2flac.sh

Codice: Seleziona tutto

#!/bin/bash
my_name=`basename "$0"`
log_file="any2flac.log"

if ! [ -d "$1" ]; then
  echo "usage: $my_name dir_name"
  exit 1
fi
pushd "$1" || { echo -e "\nERROR: can't enter directory:\n \"$1\"\n" ; exit 1; }

#fix-suffixes.sh

# first try to split full CD images using cue sheet.
#for file in *.cue; do
 # [ -s "$file" ] && CueSplit.sh .
#done

# then convert split-track files to flac.
for suffix in ape tta wv wav aif m4a; do
  if ls *.$suffix > /dev/null 2>&1 ; then
    ${suffix}2flac.sh .
  fi
done
popd
questo per prima cosa chiama un altro script (fix-suffixes.sh) che controlla ed eventualmente corregge i suffissi nei nomi dei files (si assicura che siano scritti tutti in minuscolo), ed un altro ancora (CueSplit.sh) che converte eventuali album contenuti in un unico file audio + "cue sheet" suddividendoli in tracce singole; dato che a te presumibilmente non serve nulla di tutto ciò, qui sopra ho commentato quei due step.

Infine, l'ultimo passo è un semplice loop che verifica la presenza di files con uno dei suffissi elencati e, se ve ne sono, avvia uno script dedicato ("${suffix}2flac.sh") per processarli. Di questi ovviamente ce ne deve essere uno per ciascun formato supportato (ape2flac.sh, wav2flac.sh, ecc).

Se hai tutto in m4a, a te ne serve uno solo, per quel formato. In generale si tratta di script abbastanza semplici ma, nel caso del m4a (così come per "ogg"), dato che si tratta di un "container" che può contenere sia codec lossless che "lossy", e bisogna evitare di convertire per errore questi ultimi in flac, le cose si complicano leggermente. Di seguito un abbozzo, scritto al volo...

N.B.: non ho file m4a/ALAC sottomano per testarlo, per cui non è collaudato. Potrebbero esserci errori grossolani. Non lanciarlo mai come root e, prima di usarlo sull'archivio, verifica che tutto funzioni correttamente e senza far danni!!!
Per farlo fai dei test con un utente diverso dal tuo, che non abbia permessi di scrittura su nessun file che non vuoi perdere, utilizzando una copia temporanea di parte dell'archivio (qualche dir, con qualche files m4a in ciascuna; questi ovviamente devono essere scrivibili dall'utente che usi per i test).

m4a2flac.sh

Codice: Seleziona tutto

#!/bin/bash
my_name=`basename "$0"`
if ! [ -d "$1" ]; then
  echo "usage: $my_name dir_name"
  exit 1
fi
echo "Now processing $1..."
pushd "$1" || exit 1

if ls *.[Mm]4[Aa] > /dev/null 2>&1 ; then
  rename.pl -v 's/\.[Ma]4[Aa]/.m4a/' *.[Mm]4[Aa]
fi
if ls *.m4a > /dev/null 2>&1 ; then
  pwd
  for file in *.m4a ; do
    target="$(basename "$file" .m4a).flac"
    if [ -f "$target" ]; then
      echo -e "\nERROR: file \"$target\" already exists\!\n" | tee -a $my_name.log
    elif [ -f "$file" ] && [ -s "$file" ]; then
      codec=$(mediainfo --Inform='Audio;%Format%' "$file")
      if "$codec" != "ALAC"; then
	echo -e "\nERROR: file \"$file\" is not lossless\!\n" | tee -a $my_name.log
      else
	echo -e "\nNow processing: $file" >> $my_name.log
	savetags.sh "$file"
	# There are various alternative commands to do the job, choose one:
	#avconv -i "$file" -f flac "$target" >> $my_name.log 2>&1 && rm -vf "$file" >> $my_name.log
	#ffmpeg -i "$file" -f flac "$target" >> $my_name.log 2>&1 && rm -vf "$file" >> $my_name.log
	#sndfile-convert "$file" "$target" >> $my_name.log 2>&1 && rm -vf "$file" >> $my_name.log
	pacpl --to flac --delete -v "$file" >> $my_name.log 2>&1 
      fi
    fi
  done
fi
popd
P.S.: non sono sicuro se il comando:

Codice: Seleziona tutto

mediainfo --Inform='Audio;%Format%' "$file"
dato su un file m4a lossless ritorna (esattamente) la stringa "ALAC" o qualcos'altro... quindi è possibile che il test (if "$codec" != "ALAC"; then ...) sia da correggere di conseguenza.
Ciao, Paolo.

«Se tu hai una mela, e io ho una mela, e ce le scambiamo, tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
Avatar utente
UnixMan
sostenitore
Messaggi: 12086
Iscritto il: 27 ott 2005, 22:34
Località: L'Aquila (Italy)
Has thanked: 77 times
Been thanked: 47 times

Re: Daphile e file m4a

Messaggio da UnixMan »

Dimenticavo: "savetags.sh" è un mio script che salva (cerca di salvare...) tutti i metadati ("tag") contenuti nei files di partenza. La conversione fatta con "pacpl" dovrebbe mantenerli, quindi questo script (ed i files che genera) sono superflui... (ma in altri casi no). Inoltre non supporta i files m4a, quindi puoi tranquillamente commentare la riga relativa nello script sopra (m4a2flac.sh).

Dimenticavo anche il "rename.pl".

Se usi Debian, Ubuntu o derivate è niente altro che il comando "file-rename" fornito dal pacchetto "rename" (che dovrebbe essere già installato "di serie"... altrimenti installalo con un colpo di apt).

A scelta puoi sostituire il comando "rename.pl" con "file-rename" negli script qui sopra, oppure ad es. creare un link simbolico /usr/local/bin/rename.pl che punta a /usr/bin/file-rename
Ciao, Paolo.

«Se tu hai una mela, e io ho una mela, e ce le scambiamo, tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee.»
samhorn
sostenitore
Messaggi: 675
Iscritto il: 24 gen 2011, 19:23
Been thanked: 1 time

Re: Daphile e file m4a

Messaggio da samhorn »

Alla fine i tempi per ridecodificare una discografia di grandi dimensioni avrebbe richiesto centinaia di ore macchina, ho risolto facendo il downgrade di daphile alla versione precedente.
Per chi come me usa il futro la 17.05 provoca difficoltà a transcodificare files loseless HD apple
Simone
Rispondi
  • Argomenti simili
    Statistiche
    Ultimo messaggio