Pubblico qui uno script che stiamo utilizzando per la conversione bulk di file video dai formati avi, mkv ed flv nel formato mp4 h.264 su server Linux. Il codice non è stato scritto recentemente e non posso stabilirne la provenienza, però si tratta di poche righe di facile comprensione.
Una nota importante invece in merito ai prerequisiti: se lavorate con sistemi debianderivati, è necessario che vi procuriate prima tutti i pacchetti e le librerie necessarie alla ricompilazione dei video nel nuovo formato. Per fare ciò avete bisogno di aggiungere un nuovo repository – a dire il vero piuttosto discusso per motivi di anarchica idiosincrasia rispetto a quelli ufficiali – ma vi potete fidare, specie se la macchina non è una macchina di produzione ma una workstation.
Ecco il repository da aggiungere:
echo "deb https://www.deb-multimedia.org squeeze main" >> /etc/apt/sources.list
echo "deb-src https://www.deb-multimedia.org squeeze main" >> /etc/apt/sources.list
Se non avete ancora ffmpeg sulla vostra macchina sarò sufficiente installarlo:
# aptitude update
# aptitude install ffmpeg
Se invece lo avete già installato, basterà un solo safe-upgrade di aptitude per sostituire la versione ufficiale di ffmpeg con quella messa a disposizione dal repository insieme a tutte le librerie necessarie a far funzionare questo script:
# aptitude update
# aptitude safe-upgrade
Ecco lo script:
#!/bin/bash IFS=" " for name in `find . -iname "*.avi" -or -name "*.mkv" -or -name "*.flv"` do echo $name mp4=`echo "$name" | sed 's/....$/.mp4/'` > /dev/null mp04=`echo "$name" | sed 's/....$/-0.mp4/'` > /dev/null if [ ! -f $mp4 ]; then # Run single-pass conversion .. ffmpeg -i "${name}" -acodec libfaac -ab 128k -ac 2 -vcodec libx264 -b 800k -threads 0 "${mp04}" # Allow streamed file to start playing BEFORE it is all buffered .. qt-faststart "${mp04}" "${mp4}" rm "${mp04}" fi done IFS=" "