Voilà tout est dans le titre.
Toute info. est la bienvenue.
Voilà tout est dans le titre.
Toute info. est la bienvenue.
Çà va pas t'aider énormément (voir pas du tout), mais t'as regardé du côté de pyMedia ? Le manque de documentation à fait que je m'en suis vite désintéressé, mais comme on peut lire entre-autres les mp3, doit dûrement bien avoir un truc te donnant des infos dessus... Au pire, ouvre ton mp3 directement via open et... et... ben bon courage pour trouver la façon de calculer la durée depuis les données brutes.
doit bien y avoir des infos dans ces données brutes concernant le bitrate, et de là, pourquoi ne pas trouver la relation avec la taille du fichier, pour en déduire la durée ? Enfin, si le bitrate est variable, ça fout le concept en l'air...
Bonjour,
J'avais fait une applic pour grouper tout les mp3 d'un répertoire dans un seul fichier (c'était du wx.). a voir si cela peux t'aider.
La fontion :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 def groupMp3( self,repSource, nomFichierDest ): # Regroupe les fichiers de repSource dans nomFichierDest import pymedia.audio.acodec as acodec import pymedia.muxer as muxer type="mp3" bitrate= None g=glob.glob(os.path.join(str(repSource),"*.mp3")) l=0 gSansDest=[] for f in g: if f<>nomFichierDest : l=l++os.path.getsize(f) gSansDest.append(f) self.gauge_01.SetRange(l) # Open demuxer fw= open(nomFichierDest, 'wb') for ind,fName in enumerate(gSansDest): self.text_ctrl_3.SetLabel("Traitement de "+fName+" ( "+str(ind+1)+" / "+str(len(gSansDest))+" )") if fName<>nomFichierDest: dm= muxer.Demuxer( fName.split( '.' )[ -1 ].lower() ) f= open( fName, 'rb' ) s= f.read( 90000 ) dec= enc= mx= None while len( s ): frames= dm.parse( s ) if frames: for fr in frames: # Assume for now only audio streams if dec== None: # Open decoder dec= acodec.Decoder( dm.streams[ fr[ 0 ] ] ) #print 'Decoder params:', dm.streams[ fr[ 0 ] ] # Decode audio frame r= dec.decode( fr[ 1 ] ) if r: if bitrate== None: bitrate= r.bitrate # Open muxer and encoder if enc== None: params= { 'id': acodec.getCodecID(type), 'bitrate': bitrate, 'sample_rate': r.sample_rate, 'channels': r.channels } #print 'Encoder params:', params mx= muxer.Muxer( type ) stId= mx.addStream( muxer.CODEC_TYPE_AUDIO, params ) enc= acodec.Encoder( params ) ss= mx.start() fw.write(ss) enc_frames= enc.encode( r.data ) if enc_frames: for efr in enc_frames: ss= mx.write( stId, efr ) if ss: self.gauge_01.SetValue(os.path.getsize(nomFichierDest)) self.Update() fw.write(ss) s= f.read( 100000 ) f.close() fw.close()
Merci, mais en fait la dernière fois que j'ai essayé d'utiliser pyMédia, cela n'a pas fonctionné.
Sinon je suis tombé sur ce blog qui présente le projet suivant : http://hachoir.org/wiki/hachoir-metadata .
Je vais essayer de le faire fonctionner.
En fait en regardant mes précédents posts, on m'avait donner une méthode légère avec la réponse : http://www.developpez.net/forums/d63...s-fichier-mp3/ .
Je me fais vieux...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 #! /usr/bin/env python # -*- coding: utf-8 -*- # http://code.google.com/p/quodlibet/wiki/Mutagen import mutagen.mp3 import mutagen.oggvorbis from mutagen.easyid3 import EasyID3 def get_info(f, item): """ En parallele a get_tag() """ try: return f[item][0] except: return "" def get_tag(path): """ Obtention des tags mp3 ou ogg """ ext = path[-3:] flag = 'on' # Tag du MP3 if ext == 'mp3': zik = mutagen.mp3.MP3(path) try: f = EasyID3(path) except: flag = 'off' # Tag du OGG if ext == 'ogg': zik = mutagen.oggvorbis.OggVorbis(path) f = zik # Info sur le fichier musical length = str(int(zik.info.length)) bitrate = str(int(zik.info.bitrate / 1024)) sample_rate = str(zik.info.sample_rate / 1000.) # Obtention des tags if flag != 'off': album = get_info(f, 'album') title = get_info(f, 'title') artist = get_info(f, 'artist') genre = get_info(f, 'genre') composer = get_info(f, 'composer') date = get_info(f, 'date') tracknumber = get_info(f, 'tracknumber') else: album = 'unknown' title = 'unknown' artist = 'unknown' genre = 'unknown' composer = 'unknown' date = 'unknown' tracknumber = 'unknown' rep={} rep['artist']=artist rep['album']=album rep['title']=title rep['bitrate']=bitrate rep['sample_rate']=sample_rate rep['duree en s']=length rep['genre']=genre rep['composer']=composer rep['date']=date rep['tracknumber']=tracknumber return rep path = 'Test_MP3.mp3' print get_tag(path)![]()
Partager