Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 21/06/2019, à 10: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, à 15:27)

Hors ligne

#2 Le 21/06/2019, à 11: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, à 11:08)

Hors ligne

#3 Le 21/06/2019, à 11: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 ?

man date a écrit :

      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 smile

Donut

Hors ligne