41 votes

Obtenir la longueur de .wav à partir de la sortie sox

J'ai besoin d'obtenir la longueur d'un fichier .wav.

Utilisant:

 sox output.wav -n stat

Donne :

 Samples read:            449718
Length (seconds):     28.107375
Scaled by:         2147483647.0
Maximum amplitude:     0.999969
Minimum amplitude:    -0.999969
Midline amplitude:     0.000000
Mean    norm:          0.145530
Mean    amplitude:     0.000291
RMS     amplitude:     0.249847
Maximum delta:         1.316925
Minimum delta:         0.000000
Mean    delta:         0.033336
RMS     delta:         0.064767
Rough   frequency:          660
Volume adjustment:        1.000

Comment utiliser grep ou une autre méthode pour afficher uniquement la valeur de la longueur dans la deuxième colonne, c'est-à-dire 28.107375 ?

Merci

51voto

Andrew Kuklewicz Points 4942

Il y a un meilleur moyen:

 soxi -D out.wav

39voto

phihag Points 89765

L'effet stat envoie sa sortie à stderr , utilisez 2>&1 pour rediriger vers stdout . Utilisez sed pour extraire les bits pertinents :

 sox out.wav -n stat 2>&1 | sed -n 's#^Length (seconds):[^0-9]*\([0-9.]*\)$#\1#p'

14voto

Hadi Salem Points 161

Cela peut être fait en utilisant:

  • soxi -D input.mp3 la sortie sera la durée directement en secondes
  • soxi -d input.mp3 la sortie sera la durée au format suivant hh:mm:ss.ss

7voto

Dragonfly Points 424

Cela a fonctionné pour moi (sous Windows):

 sox --i -D out.wav

4voto

Kyle Swanson Points 93

Je viens d'ajouter une option pour la sortie JSON sur les effets 'stat' et 'stats'. Cela devrait faciliter un peu l'obtention d'informations sur un fichier audio.

https://github.com/kylophone/SoxJSONStatStats

 $ sox somefile.wav -n stat -json

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X