Conversione M4A-MP3 in Debian

Posted by RedBlue on July 20, 2016 · 2 mins read

Mi è capitato di avere a che fare con files audio in formato M4A, ovvero un file MP4 contenente solo audio.

Bene, ovviamente la mia Debian li legge senza alcun problema, ma quando gli stessi files finiscono in un lettore multimediale, non è detto che valga la stessa cosa. In altre parole, il buon vecchio formato MP3 è quello che serve in questi casi.

Non volendo installare alcun software ad hoc, ho cercato un po' in rete e ho trovato qualche dritta utile per buttar giù un semplicissimo script di conversione batch.

Per prima cosa, installiamo i "ferri del mestiere":

sudo apt-get install libav-tools

Poi, creiamo lo script (ad esempio, lo chiamiamo m4aToMp3.sh) con un qualsiasi editor di testo:

#!/bin/bash

files=*.m4a

#creo una directory dove memorizzare gli mp3

if [ ! -d output ]; then

 mkdir output

fi



for file in $files; do

 mp3File=${file/%m4a/mp3}

 avconv -y -i "${file}" -ab 320k "output/${mp3File}"

done

Gli assegnamo i permessi di esecuzione:

chmod +x m4aToMp3.sh

Infine, lo copiamo nella stessa directory dove si trovano i files da convertire e lo lanciamo:

./m4aToMp3.sh

Al termine del processo (decisamente rapido), i nostri M4A saranno stati convertiti e avremo i nostri MP3 nella sottodirectory output (ovviamente potete cambiare nome a piacimento).

Un'interessante evoluzione di questo script può essere quella di usare un paio di files di appoggio per leggere quanti più tag possibili dagli M4A di partenza, e ovviamente andare a scriverli poi nei rispettivi MP3. Basta aggiungere un paio di righe:

#!/bin/bash

files=*.m4a

#creo una directory dove memorizzare gli mp3

if [ ! -d output ]; then

 mkdir output

fi



for file in $files; do

 mp3File=${file/%m4a/mp3}

 avconv -y -i "${file}" -f ffmetadata tagsIn.txt

 sed -e 's/^date=\(.*\)$/TYER=\1/' -e 's/^major_brand=.*$//' -e 's/^minor_version=.*$//' -e 's/^creation.*$//' -e 's/^compatible.*$//' -e 's/^encoder=.*$//' < tagsIn.txt > tagsOut.txt

 avconv -y -i "${file}" -i tagsOut.txt -ab 320k -map_metadata 1 -id3v2_version 3 "output/${mp3File}"

done

Alla prossima..