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 05/08/2010, à 15:25

shamanyan

[RESOLU] Recup. la duree precise d'un fichier son en bash

Bonjour,

Je cherche un moyen pour récupérer la durée précise (en milliseconde) d'un fichier audio en bash.

Pour l'instant je le fais avec la ligne suivante:

   

duree=$(ffmpeg -i "morceau.m4a" 2>&1 | grep Duration | cut -c13-23);

Mais j'obtiens un résultat assez peu précis sad : 00:01:09.21 par exemple.
J'ai bien pensé à transformer le tout en ms mais je suis loin de la véritable valeur.

L'idéal serait que la commande marche pour plusieurs format de son (mp3 et m4a minimum tongue)

Je suis débutant (et motivé), aussi j'apprécierais les explications de la commande wink

Merci d'avance

Sham.

Dernière modification par shamanyan (Le 16/08/2010, à 15:57)

Hors ligne

#2 Le 05/08/2010, à 16:03

iuchiban

Re : [RESOLU] Recup. la duree precise d'un fichier son en bash

ffmpeg -i "morceau.m4a" : affiche les info du fichier
| grep Duration : n'affiche que la ligne contenant la durée
| cut -c13-23); prends les caractères 13 à 23 de la ligne Duration

duree=$([...]) : affecte le résultat des commandes passées entre ( ) à durée

A partir de ce que tu as, tu peux transformer duree en ms par la commande suivante :

heure=$(echo $duree | cut -d":" -f1)
minute=$(echo $duree | cut -d":" -f2)
seconde=$(echo $duree | cut -d":" -f3 | cut -d"." -f1)
milli=$(echo $duree | cut -d":" -f3 | cut -d"." -f2)

total=$(($heure*3600000+$minute*60000+$seconde*1000+$milli*10))

Je fais milli*10 car s'il n'affiche que 2 chiffres après le ., ce sont des dizaines de millisecondes.


C'est depuis que Chuck Norris a laissé la vie sauve à un manchot que l'on dit que Linux est libre.

Chuck Norris n'a pas besoin d'éditer son premier message pour ajouter [Résolu]. Chuck Norris est toujours [Résolu], quoi qu'il arrive.

Hors ligne

#3 Le 06/08/2010, à 11:27

shamanyan

Re : [RESOLU] Recup. la duree precise d'un fichier son en bash

Merci pour t'a réponse.
Comme je le disais, je connais cette méthode mais elle n'est pas suffisamment précise:(, je m'explique :
Je travail sur un script pour configurer des sonneries de téléphone automatiquement.
Dans le fichier de config, je dois donner le temps en ms, or avec la méthode ffmpeg etc...
j'obtiens pour un morceau : 20630, alors que pour le même morceau dans le fichier issu du logiciel, j'ai 20574:/.

Dans le post suivant : http://forum.ubuntu-fr.org/viewtopic.php?pid=3452566

l'auteur MAO-40 dit "...durée du fichier audio en millisecondes (y'a une ligne de commande qui permet d'avoir ce chiffre avec précision, mais je ne m'en souviens plus..."

je cherche donc cette fameuse commande ou n'importe quelle autre pouvant me donner plus de précision mais surtout en ligne de commande pour l'inclure dans mon script.

Merci d'avance.

Hors ligne

#4 Le 06/08/2010, à 16:08

twocats

Re : [RESOLU] Recup. la duree precise d'un fichier son en bash

hachoir-metadata fichier.mp3 | grep D

donne (par exemple) :

- Duration: 4 min 10 sec 462 ms

Après tu peux travailler avec.


La réponse est 42

Hors ligne

#5 Le 06/08/2010, à 22:31

shamanyan

Re : [RESOLU] Recup. la duree precise d'un fichier son en bash

Merci bcp big_smile !
C'est vrai que cette méthode est plus précise...mais le chiffre et toujours différent sad !!
Pour l'heure je pars en vacances cool ! Mais je vais tester pour connaitre l'incidence qu'aurait un chiffre approximatif et aussi complétement faux.
Je vous tiens informé des que c'est fait et évidemment, je mettrais mon script en ligne pour ceux que ça intéresse!

y.

ps. pour Towcats : Vu ta signature, j'espère que tu as ta serviette wink !!

Hors ligne

#6 Le 16/08/2010, à 15:51

shamanyan

Re : [RESOLU] Recup. la duree precise d'un fichier son en bash

Me revoilou ! bronzé et tout cool
Bon alors j'ai fait quelques tests, et en voici les résultats:
L'approximation de la durée suffit à l'iPhone ... moi et mon "perfectionnisme" !!!!
La balise <Total Time> ne sert pas pour la lecture de la sonnerie mais seulement lors du réglage du volume (cf. sujet de MAO-40). hmm
Merci pour votre aide.

ps: Le script est là -> http://forum.ubuntu-fr.org/viewtopic.php?id=412665

Dernière modification par shamanyan (Le 16/08/2010, à 16:28)

Hors ligne