script shell : utiliser la durée des fichiers audio

script shell : utiliser la durée des fichiers audio - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 21-01-2007 à 18:13:33    

Bonjour tout le monde,
 
Je manipule quotidiennement plusieurs dizaines de fichiers audio (tout format mp3, ogg, wma...) et entre autre, pour chacun d'eux, je renseigne manuellement une base mysql où je mets le nom du fichier et la durée du fichier + la date du jour.
 
J'ai pensé que tout cela pouvait être fait par un petit script bash.
 
Pour le moment, mon seul problème vient de la façon dont on accède aux tags du fichier audio. Comment récupérer la "durée" du fichier audio? Si quelqu'un a une idée !


Message édité par hdiamant le 22-01-2007 à 13:39:04
Reply

Marsh Posté le 21-01-2007 à 18:13:33   

Reply

Marsh Posté le 21-01-2007 à 20:27:51    

Ben pour ca faudrait un lecteur de tag en console (une ptite recherche sur ma debian renvoie : id3v2, id3tool, lltag).
Plus bourrin : utiliser un player comme amarok, qui remplit une base de données mysql pour gérer sa collection de mp4
Encore plus bourrin : utiliser hachoir-metadata pour  analyser le code binaire du mp3, ca renvoie titre, auteur, durée (mais bon lire les tags c'est autrement plus intelligent)


Message édité par Xavier_OM le 21-01-2007 à 20:28:20

---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 21-01-2007 à 20:49:25    

oui, ce n'est pas simple.
 
Les outils de type id3v2 sont bien pratiques mais ils ne renvoient pas la durée des enregistrements. de plus mes captures audio sont en mp3, ogg, wav...
 
évidemment, je ne compte pas utiliser Amarok (étant un gnome user) !
 
Donc je cherche encore  !

Reply

Marsh Posté le 21-01-2007 à 21:00:11    

hdiamant a écrit :

oui, ce n'est pas simple.
 
Les outils de type id3v2 sont bien pratiques mais ils ne renvoient pas la durée des enregistrements. de plus mes captures audio sont en mp3, ogg, wav...
 
évidemment, je ne compte pas utiliser Amarok (étant un gnome user) !
 
Donc je cherche encore  !


 
listen ? :D
sinon ya mp3info, mais je pense pas qu'il gère les tag des autres formats :o


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 21-01-2007 à 21:07:43    

Tu connais le Rhythmbox powa ?

 

Sinon, j'ai trouvé sur le forum d'ubuntu extract qui me donne une sortie assez intéressante :

 

$ extract -p format audiodata/audio342.mp3
format - 352 kbps, 12000 hz, 1m24 stereo

 

as-tu une idée pour tuber et récupérer cette durée? J'aurais tellement préféré un truc du genre hh:mm:ss !!!


Message édité par hdiamant le 21-01-2007 à 21:09:01
Reply

Marsh Posté le 21-01-2007 à 21:55:52    

Bon, extract ne me donne pas la durée de toute façon avec un ogg.
 
La solution, c'est hachoir-metadata... mais bon, c'est bourrin, tu disais?

Reply

Marsh Posté le 21-01-2007 à 22:47:55    

J'ai trouvé la solution pour les MP3. C'est tout simple avec mp3info :
 

Citation :

mp3info -p %m%s


 
Pour les ogg, je ne suis pas sûr du bon moyen de récupérer l'info, que pensez-vous de ça :
 

Citation :

ogginfo audio.ogg | grep Playback


 

Reply

Marsh Posté le 22-01-2007 à 07:47:27    

hdiamant a écrit :

J'ai trouvé la solution pour les MP3. C'est tout simple avec mp3info :
 

Citation :

mp3info -p %m%s


 
Pour les ogg, je ne suis pas sûr du bon moyen de récupérer l'info, que pensez-vous de ça :
 

Citation :

ogginfo audio.ogg | grep Playback



 
| grep Playback | cut -d " " -f 3


---------------
Il y a autant d'atomes d'oxygène dans une molécule d'eau que d'étoiles dans le système solaire.
Reply

Marsh Posté le 22-01-2007 à 11:08:13    

Merci, je vais voir ça  dès que j'aurais un peu de temps !

Reply

Marsh Posté le 22-01-2007 à 20:53:07    

Alors voilà comment je procède finalement : Je trouve les minutes et les secondes séparément. Comme ça, je pourrai les envoyer plus facilement sous la forme HH:MM:SS dans ma base mysql.
 
Pour les MP3, mp3info -p %m%s  ne va que si les fichiers son taggés, ce qui n'est pas mon cas. J'utilise donc autre chose :

Code :
  1. MM=`mp3info -x $file0 | grep Length | cut -d ":" -f2`
  2.   SS=`mp3info -x $file0 | grep Length | cut -d ":" -f3`


Pour les .ogg, la solution inspirée de Xavier_OM va bien :

Code :
  1. MM=`ogginfo $file0 | grep Playback | cut -d " " -f3 | cut -d "." -f1`


 
Mon problème maintenant, c'est que je n'arrive pas à écrire un if, elif ! Voilà, ce que j'ai écrit et ça marche pas :
 

Code :
  1. # Récupération de la durée du fichier.
  2. # S'il s'agit d'un MP3
  3. if [ "$extend" = "mp3" ] ; then
  4.  MM=`mp3info -x $file0 | grep Length | cut -d ":" -f2`
  5.  SS=`mp3info -x $file0 | grep Length | cut -d ":" -f3`
  6. elif [ "$extend" = "ogg" ] ; then
  7.  MM=`ogginfo $file0 | grep Playback | cut -d " " -f3 | cut -d "." -f1`
  8. `
  9. else
  10.  zenity --info --title="Erreur" --text="Le fichier n'est pas conforme." ; exit
  11. fi
  12. zenity --info --title "Résultat" --text "Durée du fichier : $MM m $SS s."


 
Rien ne se passe ! Je suis preneur de tout conseil ! même sur la manière de présenter le code.


Message édité par hdiamant le 22-01-2007 à 20:56:47
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed