vendredi 7 octobre 2011
FFmpeg/Dialog:: Barre de progression de conversion vidéo sous Shell grâce à Dialog
Par david techer, vendredi 7 octobre 2011 à 00:50 :: Multiméda sous GNU/Linux
Pour les habitués de FFmpeg, avoir une petit barre de progression vidéo, c'est toujours plus intéressant et plus ergonomique que les informations de conversion renvoyées par FFmpeg. J'ai donc tenté de voir s'il existait des solutions à ce sujet.J'avais voulu le faire en testant le projet http://ffmpegprogress.sourceforge.net.. Manque de bol ca n'a pas marché sur mon serveur
.
Du coup, je me suis fait un petit script shell en recourant donc à dialog et à l'astuce proposée
.
1. Pré-requis
- Il faut installer
dialogapt-get install dialog
- avoir Ffmpeg déjà installé
2. Exemple




3. Le script shell utilisé
Voici le scriptFFMPEG_PATH="/opt/multimedia-testing-4/bin/ffmpeg";
FFMPEG_INPUT="/www/test/0.1-Beta/janadefi-daywith03.wmv";
FFMPEG_OUTPUT="/www/test/0.1-Beta/janadefi-daywith03.mp4";
FFMPEG_ARGUMENTS="-acodec libaacplus -ac 2 -ar 44100 -ab 64k -vcodec libx264 -crf 22 -threads 0 -b 550k -qmin 10 -qmax 30 -threads 0 -y";
FFMPEG_LOG="/tmp/ffmpeg_$$.log";
TIME_LOG="/tmp/ffmpeg_times_$$.log";
${FFMPEG_PATH} -i ${FFMPEG_INPUT} ${FFMPEG_ARGUMENTS} ${FFMPEG_OUTPUT} > ${FFMPEG_LOG} 2>&1 &
sleep 4;
Duration=$(grep Duration ${FFMPEG_LOG} | awk '{print$2}'|awk -F ":" '{printf("%d",$1*60+$2*60+$3);}')
Pourcentage=0;
(
while [ ${Pourcentage} -lt 100 ]
do
grep 'time=' ${FFMPEG_LOG} > ${TIME_LOG};
sed -i "s:.*time=::g;s: .*::g" ${TIME_LOG};
OnTime=$(awk -F ":" '{printf("%d",$1*60+$2*60+$3);}' ${TIME_LOG});
Pourcentage=$(awk -v OnTime=${OnTime} -v Duration=${Duration} '{printf("%d\n",OnTime/Duration*100);}' ${TIME_LOG});
echo "${Pourcentage}"
echo "XXX"
echo "Informations\n\n* Input [${FFMPEG_INPUT}]\n Duration = ${Duration} secondes\n Size = $(du -hs ${FFMPEG_INPUT} | awk '{print$1}')\n\n* Output [${FFMPEG_OUTPUT}]\n Duration = ${OnTime} secondes\n Size = $(du -hs ${FFMPEG_OUTPUT} | awk '{print$1}')"
echo "XXX"
sleep 1;
done
) |
/usr/bin/dialog --title "FFMPEG Conversion" --gauge "Progress Bar FFmpeg" 20 90 0
Remarques concernant une éventuelle adaptation du script
- La variable
FFMPEG_PATHest à adapter à votre path vers votre FFmpeg; sleep 4a été mis afin de marquer une courte pause le temps que FFmpeg se lance pour effectuer les premières secondes de conversion;- Pour
gtkdialog, les valeurs20 90 0sont à adapter aux dimensions de votre fenêtre de terminal.

FFmpeg compilé en statique