#1 Le 21/06/2019, à 09:05
- DonutMan75
[RESOLU] Connaître la durée en seconde d'un fichier audio
Bonjour à tous,
voilà je cherche un script qui retourne la durée en seconde d'un fichier audio donné.
J'ai une solution à base de sed/bc mais je voulais savoir si vous aviez une solution avec la commande date ?
J'ai déjà ça :
$ ffmpeg -i test.wav 2>&1 | grep Duration
Duration: 00:01:10.00, bitrate: 160 kb/s
$ ffmpeg -i test.wav 2>&1 | grep Duration | sed -re 's/Duration: (.*), bitrate.*/\1/'
00:01:10.00
Je souhaite travailler sur cette chaîne "00:01:10.00" pour que ça me retourne le nombre de seconde (donc ici 60+10 = 70).
J'ai cette solution avec bc :
$ ffmpeg -i test.wav 2>&1 | grep Duration | sed -re 's/Duration: ([0-9]{2,2}):([0-9]{2,2}):([0-9]{2,2}).*, bitrate.*/\1*3600+\2*60+\3/' | bc
70
Quid avec date ?
Déjà, date ne semble pas lire le flux en sortie d'un pipe et il faut ruser à l'aide d'un read :
$ ffmpeg -i test.wav 2>&1 | grep Duration | sed -re 's/Duration: (.*), bitrate.*/\1/' | { read tmp ; date -d "$tmp" ; }
vendredi 21 juin 2019, 00:01:10 (UTC+0200)
A partir de là, je suis bloqué... J'avais pensé au format +%S mais ça ne retourne que les secondes (donc ici 10).
Bref, si vous avez une solution plus élégante que mon bc, je suis preneur !
Merci à vous et bonne journée !
Donut
Dernière modification par DonutMan75 (Le 21/06/2019, à 14:27)
Hors ligne
#2 Le 21/06/2019, à 10:06
- pingouinux
Re : [RESOLU] Connaître la durée en seconde d'un fichier audio
Bonjour,
Ce n'est sans doute pas la meilleure solution, mais si tu veux absolument utiliser date
$ duree=00:01:10.05
$ date -ud "1970-01-01 $duree" +%s.%2N
70.05
Dernière modification par pingouinux (Le 21/06/2019, à 10:08)
Hors ligne
#3 Le 21/06/2019, à 10:14
- DonutMan75
Re : [RESOLU] Connaître la durée en seconde d'un fichier audio
Hello pingouinux,
super, merci !
Il me manquait l'astuce de la date 1970-01-01 et de l'option %s !
Le %N affiche les nanosecondes.
Je comprends bien le %2N qui signifie "affiche les nanosecondes avec 2 chiffres significatifs, ça fonctionne bien chez moi mais curieusement ce n'est pas documenté dans le man Oo' Une subtilité non documentée ?
Le « % » peut être suivi d'un des indicateurs optionnels suivants :
- (trait d'union) ne pas compléter le champ
_ (soulignement) compléter avec des espaces
0 (zéro) compléter avec des zéros
^ utiliser des lettres majuscules si possible
# utiliser la casse inversée si possible
Chaque indicateur peut être suivi d'un attribut largeur optionnel puis d'un commutateur optionnel qui peut être :
« E » pour utiliser la mise en forme régionale si disponible
« 0 » pour utiliser les symboles numériques régionaux si disponibles
Enfin en tout cas, merci pour ton retour, qui me permet de progresser un peu avec la commande date !
Bonne journée à tous
Donut
Hors ligne