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 14/01/2013, à 16:41

Compte anonymisé

[Résolu]Convertisseur (hh:mm:s...

Bonjour,

Je cherche mais ne trouve pas, mise à part sur des pages web, un convertisseur (logiciel) en milliseconde  des heures, minutes et secondes.
(Même en nanoseconde serait un plus)
C'est pour rentrer ce résultat dans un programme pour couper une vidéo avec plus de précision.

Merci par avance de votre aide.

Dernière modification par Compte anonymisé (Le 14/01/2013, à 18:49)

#2 Le 14/01/2013, à 17:01

xabilon

Re : [Résolu]Convertisseur (hh:mm:s...

Salut

Il suffit de piper ton résultat dans :

awk '{ split($1, A, ":"); print 3600000*A[1] + 60000*A[2] + 1000*A[3]}'

Pour passer un sujet en résolu : modifiez le premier message et ajoutez [Résolu] au titre.

Hors ligne

#3 Le 14/01/2013, à 17:36

xabilon

Re : [Résolu]Convertisseur (hh:mm:s...

awk permet d'effectuer des actions sur un fichier : http://www.shellunix.com/awk.html
le split divise la chaîne HH:MM:SS.mmm à chaque ":", et les met dans un tableau A, donc on se retrouve avec A[1] = HH, A[2] = MM et A[3] = SS.mmm
puis on convertit tout ça en millisecondes et on ajoute.

Tu peux tester, par exemple 1h23mn53.235 en millisecondes :

echo 1:23:53.235 | awk '{ split($1, A, ":"); print 3600000*A[1] + 60000*A[2] + 1000*A[3]}'

Pour l'utiliser, si par exemple tu as une commande "longueur" qui te donne la longueur du fichier X.avi au format HH:MM:SS.mmm :

longueur Y.avi | awk '{ split($1, A, ":"); print 3600000*A[1] + 60000*A[2] + 1000*A[3]}'

Tu peux aussi faire un script bash que tu pourras appeler comme une simple commande. D'où sera appelée cette conversion ?

Dernière modification par xabilon (Le 14/01/2013, à 17:40)


Pour passer un sujet en résolu : modifiez le premier message et ajoutez [Résolu] au titre.

Hors ligne

#4 Le 14/01/2013, à 17:41

xabilon

Re : [Résolu]Convertisseur (hh:mm:s...

La commande "longueur" n'existe pas, c'est juste un exemple, hein big_smile !

Dernière modification par xabilon (Le 14/01/2013, à 17:44)


Pour passer un sujet en résolu : modifiez le premier message et ajoutez [Résolu] au titre.

Hors ligne

#5 Le 14/01/2013, à 17:51

xabilon

Re : [Résolu]Convertisseur (hh:mm:s...

Si nano = 10^-9, oui. Mais il faut faire pareil pour 3600000 (--> 3600000000000) et 60000 (--> 60000000000)


Pour passer un sujet en résolu : modifiez le premier message et ajoutez [Résolu] au titre.

Hors ligne

#6 Le 14/01/2013, à 18:20

xabilon

Re : [Résolu]Convertisseur (hh:mm:s...

Tu fais quoi, comme commande, pour couper ta vidéo ? Si c'est répétitif, il vaut mieux faire un script, oui, mais dans ce cas awk sera inutile, il faudra l'écrire en bash


Pour passer un sujet en résolu : modifiez le premier message et ajoutez [Résolu] au titre.

Hors ligne

#7 Le 14/01/2013, à 21:20

xabilon

Re : [Résolu]Convertisseur (hh:mm:s...

Sinon un script bash :

#!/bin/bash

# Prend un paramètre de la forme HH:MM:SS.mmm et le convertit en millisecondes

h=$(echo $1 | cut -d':' -f1)  # on releve les heures
m=$(echo $1 | cut -d':' -f2)  # on releve les minutes
s=$(echo $1 | cut -d':' -f3)  # on releve les secondes
s=$(echo "$s/.001" | bc) # on transforme les secondes en milliemes de secondes

t=$((3600000 * $h + 60000 * $m + $s)) # on ajoute le tout et on l'affiche
echo $t;

exit

Tu l'enregistres dans un fichier texte convtime.sh, tu le rends exécutable, et depuis le dossier où le script se trouve :

./convtime.sh 1:23:34.256

te donnera 5014256 (si tu veux en nanosecondes, multiplie tous les facteurs par 1000000)


Pour passer un sujet en résolu : modifiez le premier message et ajoutez [Résolu] au titre.

Hors ligne