Conversione bulk di file video da avi, mkv ed flv in mp4 h.264

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=" "
Condivido

Leave a comment