Dans le cadre d’une formation en ligne, j’ai cherché à connaître la durée totale des fichiers vidéos qui étaient contenus dans un dossier.
Il est toujours intéressant de donner le nombre d’heures de vidéos sur une fiche produit par exemple, pour que le client puisse avoir une idée avant d’acheter.
Pour ce faire, nous avons plusieurs options: ffmpeg
d’une part ou alors mediainfo
.
J’ai lancé un petit apt install
factice sur le serveur : installer ffmpeg
revient à installer 110 nouveaux paquets, soit 600 Mo. En comparaison, mediainfo
ne requiert que 3 paquets, soit 2.3 Mo.
Nous utiliserons donc mediainfo
pour nos tests.
Calculer la durée de chaque fichier
Voici comment calculer la durée de chaque fichier, en format lisible par tous:
mediainfo --Output="General;%Duration/String%" *.mp4
38 min 6 s
Code language: JavaScript (javascript)
Voici comment calculer la durée de chaque fichier, mais cette fois au format timecode (xx:xx:xx.xx) :
mediainfo --Output="General;%Duration/String3%" *.mp4
00:38:06.12
Code language: JavaScript (javascript)
Ces deux commandes nous donnent la durée de chaque fichier MP4 présent dans le répertoire.
Nous allons maintenant voir comment les additionner pour obtenir la durée totale des enregistrements du dossier.
Calculer la durée totale des fichiers d’un dossier
Nous allons utiliser la dernière commande, celle qui nous donne les durées au format timecode, et allons ajouter toutes ces durées pour obtenir la durée totale des enregistrements présents dans notre dossier.
Voici la commande:
mediainfo '--Output=Video;%Duration%\n' *.mp4 | awk '{ sum += $1 } END { secs=sum/1000; h=int(secs/3600);m=int((secs-h*3600)/60);s=int(secs-h*3600-m*60); printf("%02d:%02d:%02d\n",h,m,s) }'
Code language: JavaScript (javascript)
Résultat:
21:03:48
Code language: CSS (css)
Nous avons donc un peu plus de 21 heures d’enregistrements pour notre cours en ligne :)