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..