Si je passe un fichier mp3, il me retourne des valeurs
Par contre, si je passe un fichier wma, il se plante lamentablement avec
le message d' "error reporting" de windows.
Il semblerai que ça soit un bug lié à wma, dans pymedia (d'après les
bugs cités pour la version 1.3.5)
Donc si quelqu'un a une solution à ce problème (ou une solution
alternative à pymedia pour simplement obtenir la durée d'un fichier
wma), je suis preneur pour n'importe quelle suggestion.
J'ai également laissé un message sur le forum pymedia.
J'ai une solution. Elle passe par l'utilisation de Ctypes, pour adresser les fonctions MCI de windows.
Grâce à ça, je peux enregistrer, jouer, ou mesurer la longueur, d'un son, ou d'une musique, pour les formats WAV, MP3, MID, WMA, AVI-audio.
Il faut juste que je retrouve où j'ai rangé ça. Et c'est ce point qui est le plus délicat...
A toi de me dire si ça urge...
MCI
Titouille
Hello !!
Ben ça serai bien utile, oui :) j'ai uniquement besoin de récupérer la durée, c'est tout. Et c'est plus ou moins urgent... ça peut attendre demain ou après demain, mais si possible avant la fin de semaine, ça serai vraiment top :)
Merci michel !
Thierry
Bonjour !
J'ai une solution. Elle passe par l'utilisation de Ctypes, pour adresser les fonctions MCI de windows.
Grâce à ça, je peux enregistrer, jouer, ou mesurer la longueur, d'un son, ou d'une musique, pour les formats WAV, MP3, MID, WMA, AVI-audio.
Il faut juste que je retrouve où j'ai rangé ça. Et c'est ce point qui est le plus délicat...
A toi de me dire si ça urge...
MCI
Hello !!
Ben ça serai bien utile, oui :) j'ai uniquement besoin de récupérer la
durée, c'est tout. Et c'est plus ou moins urgent... ça peut attendre
demain ou après demain, mais si possible avant la fin de semaine, ça
serai vraiment top :)
Merci michel !
Thierry
Bonjour !
J'ai une solution. Elle passe par l'utilisation de Ctypes, pour adresser les
fonctions MCI de windows.
Grâce à ça, je peux enregistrer, jouer, ou mesurer la longueur, d'un son, ou
d'une musique, pour les formats WAV, MP3, MID, WMA, AVI-audio.
Il faut juste que je retrouve où j'ai rangé ça. Et c'est ce point qui est
le plus délicat...
Ben ça serai bien utile, oui :) j'ai uniquement besoin de récupérer la durée, c'est tout. Et c'est plus ou moins urgent... ça peut attendre demain ou après demain, mais si possible avant la fin de semaine, ça serai vraiment top :)
Merci michel !
Thierry
Bonjour !
J'ai une solution. Elle passe par l'utilisation de Ctypes, pour adresser les fonctions MCI de windows.
Grâce à ça, je peux enregistrer, jouer, ou mesurer la longueur, d'un son, ou d'une musique, pour les formats WAV, MP3, MID, WMA, AVI-audio.
Il faut juste que je retrouve où j'ai rangé ça. Et c'est ce point qui est le plus délicat...
A toi de me dire si ça urge...
MCI
Do Re Mi chel La Si Do
Salut !
Ci-dessous, le code (réduit).
Ne pas oublier de changer le nom du fichier, ligne [-5]
Et, il est plus simple de garder l'alias 'toto'.
Michel Claveau
# -*- coding: cp1252 -*-
import time from ctypes import windll, c_buffer
class mci: def __init__(self): self.w32mci = windll.winmm.mciSendStringA self.w32mcierror = windll.winmm.mciGetErrorStringA
mci=mci() mci.directsend('open "c:informaticien.wma" alias toto') mci.directsend('set toto time format milliseconds') err,buf=mci.directsend('status toto length ') print 'Duree du fichier : ',buf,' millisecondes' mci.directsend('close toto')
Salut !
Ci-dessous, le code (réduit).
Ne pas oublier de changer le nom du fichier, ligne [-5]
Et, il est plus simple de garder l'alias 'toto'.
Michel Claveau
# -*- coding: cp1252 -*-
import time
from ctypes import windll, c_buffer
class mci:
def __init__(self):
self.w32mci = windll.winmm.mciSendStringA
self.w32mcierror = windll.winmm.mciGetErrorStringA
mci=mci()
mci.directsend('open "c:\informaticien.wma" alias toto')
mci.directsend('set toto time format milliseconds')
err,buf=mci.directsend('status toto length ')
print 'Duree du fichier : ',buf,' millisecondes'
mci.directsend('close toto')
mci=mci() mci.directsend('open "c:informaticien.wma" alias toto') mci.directsend('set toto time format milliseconds') err,buf=mci.directsend('status toto length ') print 'Duree du fichier : ',buf,' millisecondes' mci.directsend('close toto')
Titouille
Re !!
J'ai repris ton exemple de code qui est plutot convaincant. J'ai juste un problème avec :
dans mon cas, je dois tester 1 ou plusieurs fichiers wma pour récupérer leur durée.
Dans ton message, tu dis qu'il est préférable de garder l'alias 'toto', mais si je le garde, dès le second fichier wma testé, il me retourne une erreur car le fichier dont l'alias est toto "est déjà utilisé dans cette application"...
Donc ce que je me demandais, c'est si utiliser plusieurs alias allait représenter une utlisation mémoire plus grande (car plusieurs références pointant sur plusieurs fichiers), et si c'est le cas, comment faire pour "écraser" la référence actuelle par une autre sans provoquer d'erreur... par exemple évaluer une commande "close" ou "delete" via directsend ???
Voilà... Si tu as une suggestion, ça me serai bien utile :)
D'avance merci, a+
Salut !
Ci-dessous, le code (réduit).
Ne pas oublier de changer le nom du fichier, ligne [-5]
Et, il est plus simple de garder l'alias 'toto'.
Michel Claveau
# -*- coding: cp1252 -*-
import time from ctypes import windll, c_buffer
class mci: def __init__(self): self.w32mci = windll.winmm.mciSendStringA self.w32mcierror = windll.winmm.mciGetErrorStringA
mci=mci() mci.directsend('open "c:informaticien.wma" alias toto') mci.directsend('set toto time format milliseconds') err,buf=mci.directsend('status toto length ') print 'Duree du fichier : ',buf,' millisecondes' mci.directsend('close toto')
Re !!
J'ai repris ton exemple de code qui est plutot convaincant.
J'ai juste un problème avec :
dans mon cas, je dois tester 1 ou plusieurs fichiers wma pour récupérer
leur durée.
Dans ton message, tu dis qu'il est préférable de garder l'alias 'toto',
mais si je le garde, dès le second fichier wma testé, il me retourne une
erreur car le fichier dont l'alias est toto "est déjà utilisé dans cette
application"...
Donc ce que je me demandais, c'est si utiliser plusieurs alias allait
représenter une utlisation mémoire plus grande (car plusieurs références
pointant sur plusieurs fichiers), et si c'est le cas, comment faire pour
"écraser" la référence actuelle par une autre sans provoquer d'erreur...
par exemple évaluer une commande "close" ou "delete" via directsend ???
Voilà... Si tu as une suggestion, ça me serai bien utile :)
D'avance merci, a+
Salut !
Ci-dessous, le code (réduit).
Ne pas oublier de changer le nom du fichier, ligne [-5]
Et, il est plus simple de garder l'alias 'toto'.
Michel Claveau
# -*- coding: cp1252 -*-
import time
from ctypes import windll, c_buffer
class mci:
def __init__(self):
self.w32mci = windll.winmm.mciSendStringA
self.w32mcierror = windll.winmm.mciGetErrorStringA
mci=mci()
mci.directsend('open "c:\informaticien.wma" alias toto')
mci.directsend('set toto time format milliseconds')
err,buf=mci.directsend('status toto length ')
print 'Duree du fichier : ',buf,' millisecondes'
mci.directsend('close toto')
J'ai repris ton exemple de code qui est plutot convaincant. J'ai juste un problème avec :
dans mon cas, je dois tester 1 ou plusieurs fichiers wma pour récupérer leur durée.
Dans ton message, tu dis qu'il est préférable de garder l'alias 'toto', mais si je le garde, dès le second fichier wma testé, il me retourne une erreur car le fichier dont l'alias est toto "est déjà utilisé dans cette application"...
Donc ce que je me demandais, c'est si utiliser plusieurs alias allait représenter une utlisation mémoire plus grande (car plusieurs références pointant sur plusieurs fichiers), et si c'est le cas, comment faire pour "écraser" la référence actuelle par une autre sans provoquer d'erreur... par exemple évaluer une commande "close" ou "delete" via directsend ???
Voilà... Si tu as une suggestion, ça me serai bien utile :)
D'avance merci, a+
Salut !
Ci-dessous, le code (réduit).
Ne pas oublier de changer le nom du fichier, ligne [-5]
Et, il est plus simple de garder l'alias 'toto'.
Michel Claveau
# -*- coding: cp1252 -*-
import time from ctypes import windll, c_buffer
class mci: def __init__(self): self.w32mci = windll.winmm.mciSendStringA self.w32mcierror = windll.winmm.mciGetErrorStringA
mci=mci() mci.directsend('open "c:informaticien.wma" alias toto') mci.directsend('set toto time format milliseconds') err,buf=mci.directsend('status toto length ') print 'Duree du fichier : ',buf,' millisecondes' mci.directsend('close toto')
Titouille
Lol :)
Bon, ben je suis tombé la dessus : http://www.frbox.net/viewtopic-193904.html ou tu donnais un exemple presque identique, mais avec quelques lignes en + (la fermeture du fichier, par exemple...)
J'avais tenté d'envoyer un message avec directsend en faisant
self.directsend( 'close "' + filename + '"' )
mais ça ne fonctionnait pas... en fait, il suffisait de passer l'alias... hem :s
Bref, merci pour ton aide précieuse, Michel
Re !!
J'ai repris ton exemple de code qui est plutot convaincant. J'ai juste un problème avec :
dans mon cas, je dois tester 1 ou plusieurs fichiers wma pour récupérer leur durée.
Dans ton message, tu dis qu'il est préférable de garder l'alias 'toto', mais si je le garde, dès le second fichier wma testé, il me retourne une erreur car le fichier dont l'alias est toto "est déjà utilisé dans cette application"...
Donc ce que je me demandais, c'est si utiliser plusieurs alias allait représenter une utlisation mémoire plus grande (car plusieurs références pointant sur plusieurs fichiers), et si c'est le cas, comment faire pour "écraser" la référence actuelle par une autre sans provoquer d'erreur... par exemple évaluer une commande "close" ou "delete" via directsend ???
Voilà... Si tu as une suggestion, ça me serai bien utile :)
D'avance merci, a+
Lol :)
Bon, ben je suis tombé la dessus :
http://www.frbox.net/viewtopic-193904.html ou tu donnais un exemple
presque identique, mais avec quelques lignes en + (la fermeture du
fichier, par exemple...)
J'avais tenté d'envoyer un message avec directsend en faisant
self.directsend( 'close "' + filename + '"' )
mais ça ne fonctionnait pas... en fait, il suffisait de passer
l'alias... hem :s
Bref, merci pour ton aide précieuse, Michel
Re !!
J'ai repris ton exemple de code qui est plutot convaincant.
J'ai juste un problème avec :
dans mon cas, je dois tester 1 ou plusieurs fichiers wma pour récupérer
leur durée.
Dans ton message, tu dis qu'il est préférable de garder l'alias 'toto',
mais si je le garde, dès le second fichier wma testé, il me retourne une
erreur car le fichier dont l'alias est toto "est déjà utilisé dans cette
application"...
Donc ce que je me demandais, c'est si utiliser plusieurs alias allait
représenter une utlisation mémoire plus grande (car plusieurs références
pointant sur plusieurs fichiers), et si c'est le cas, comment faire pour
"écraser" la référence actuelle par une autre sans provoquer d'erreur...
par exemple évaluer une commande "close" ou "delete" via directsend ???
Voilà... Si tu as une suggestion, ça me serai bien utile :)
Bon, ben je suis tombé la dessus : http://www.frbox.net/viewtopic-193904.html ou tu donnais un exemple presque identique, mais avec quelques lignes en + (la fermeture du fichier, par exemple...)
J'avais tenté d'envoyer un message avec directsend en faisant
self.directsend( 'close "' + filename + '"' )
mais ça ne fonctionnait pas... en fait, il suffisait de passer l'alias... hem :s
Bref, merci pour ton aide précieuse, Michel
Re !!
J'ai repris ton exemple de code qui est plutot convaincant. J'ai juste un problème avec :
dans mon cas, je dois tester 1 ou plusieurs fichiers wma pour récupérer leur durée.
Dans ton message, tu dis qu'il est préférable de garder l'alias 'toto', mais si je le garde, dès le second fichier wma testé, il me retourne une erreur car le fichier dont l'alias est toto "est déjà utilisé dans cette application"...
Donc ce que je me demandais, c'est si utiliser plusieurs alias allait représenter une utlisation mémoire plus grande (car plusieurs références pointant sur plusieurs fichiers), et si c'est le cas, comment faire pour "écraser" la référence actuelle par une autre sans provoquer d'erreur... par exemple évaluer une commande "close" ou "delete" via directsend ???
Voilà... Si tu as une suggestion, ça me serai bien utile :)
D'avance merci, a+
Do Re Mi chel La Si Do
Bonjour !
Je pense que tu as raison, en utilisant la commande "delete" de MCI. Mais, normalement, le "close" pourrait suffire.
En fait, ces commandes existaient, dans mon code-source original, avec les commandes "play", "record", etc.
Mais, je les avais enlevé, à ta demande (je cite : "uniquement besoin de récupérer la durée, c'est tout.")
Finalement, quelques soient les méthodes et les langages, les spécifs des utilisateurs sont à la rue... ;-))) C'est toujours la même chanson. Et, pour cette chanson-là, je ne sais pas comment on détermine sa longueur...
En pratique, j'utilise très peu ce genre de chose. Je m'en sers seulement pour attacher des commentaires vocaux à des objets Python persistants.
@-salutations -- Michel Claveau
Bonjour !
Je pense que tu as raison, en utilisant la commande "delete" de MCI.
Mais, normalement, le "close" pourrait suffire.
En fait, ces commandes existaient, dans mon code-source original, avec les
commandes "play", "record", etc.
Mais, je les avais enlevé, à ta demande (je cite : "uniquement besoin de
récupérer la durée, c'est tout.")
Finalement, quelques soient les méthodes et les langages, les spécifs des
utilisateurs sont à la rue... ;-)))
C'est toujours la même chanson. Et, pour cette chanson-là, je ne sais pas
comment on détermine sa longueur...
En pratique, j'utilise très peu ce genre de chose. Je m'en sers seulement
pour attacher des commentaires vocaux à des objets Python persistants.
Je pense que tu as raison, en utilisant la commande "delete" de MCI. Mais, normalement, le "close" pourrait suffire.
En fait, ces commandes existaient, dans mon code-source original, avec les commandes "play", "record", etc.
Mais, je les avais enlevé, à ta demande (je cite : "uniquement besoin de récupérer la durée, c'est tout.")
Finalement, quelques soient les méthodes et les langages, les spécifs des utilisateurs sont à la rue... ;-))) C'est toujours la même chanson. Et, pour cette chanson-là, je ne sais pas comment on détermine sa longueur...
En pratique, j'utilise très peu ce genre de chose. Je m'en sers seulement pour attacher des commentaires vocaux à des objets Python persistants.