Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 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 | | Calendrier |
|
|
| lecteur MP3 aléatoire | |
| | Auteur | Message |
---|
Francis-mr
Nombre de messages : 186 Date d'inscription : 26/11/2012
| Sujet: lecteur MP3 aléatoire Jeu 9 Avr 2015 - 8:55 | |
| Bonjour, Voulant faire un lecteur de fichiers MP3 aléatoire, je me suis heurté au problème de connaitre la durée du fichier MP3, comme d’autre avant moi. En cherchant une solution j’ai trouvé sur internet un fichier Excel qui permet de collecter les informations de fichier. Je l’ai donc adapté à mes besoins, pour créer un fichier texte listant les fichiers avec leur durée. J’ai mis ce fichier « ListeurMP3.xls » dans mon espace MyDrive. Ci-dessous, le code de mon lecteur à mettre dans le répertoire de vos fichiers MP3 avec la liste créée. - Code:
-
dim F%, c%, s% :Label JOU
width 0,500 :height 0,50 :left 0,screen_x-520 :top 0,20 :border_small 0 Caption 0,"Lecture aléatoire de fichier MP3" :font_bold 0 :on_click 0,JOU dlist 1 :sound 2 :timer 3 if file_exists("_ListeMP3.txt")=0 then message "Manque Liste MP3" :terminate file_load 1,"_ListeMP3.txt" c%=count(1) gosub JOU end
JOU: cls :F%=int(rnd(c%)) if odd(F%)=0 then F%=F%-1 if file_exists(item_read$(1,F%))=0 then print "Manque fichier: "+item_read$(1,F%) :end print left$(item_read$(1,F%),len(item_read$(1,F%))-4) print_locate 450,0 :print item_read$(1,F%+1) file_load 2,item_read$(1,F%) :play 2 s%=(val(left$(item_read$(1,F%+1),2))*60)+val(right$(item_read$(1,F%+1),2)) timer_interval 3,s%*1000 on_timer 3,JOU return PS : Si quelqu’un veut transcrire le code du ListeurMP3 en Panoramic, je suis preneur. A+ | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 9 Avr 2015 - 14:17 | |
| | |
| | | Francis-mr
Nombre de messages : 186 Date d'inscription : 26/11/2012
| Sujet: Re: lecteur MP3 aléatoire Jeu 9 Avr 2015 - 17:05 | |
| @ygeronimi Dans aucun des deux sujets tu n'extrais la durée du MP3 si ne m'abuse ? De plus, le cleaner plante chez moi. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 9 Avr 2015 - 19:16 | |
| Je ne te dis pas de prendre les codes mais les discussions qui ont eu lieu sur ses sujets peuvent t' apporter des infos sur ces fameux fichiers. Il y en a eu d' autres mais je ne les retrouve pas... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: lecteur MP3 aléatoire Jeu 9 Avr 2015 - 21:26 | |
| Le format mp3 n'est pas quelque chose de simple, avec toutes ses variantes, comme on avait pu le voir, n'est-ce pas ygeronimi, et ça me paraît bien compliqué d'extraire la durée, qui n'est inscrite nulle part dans le fichier, mais qu'il faut calculer à partir des autres données. Je préconiserais plutôt d'utiliser ffmpeg, qui est le couteau suisse audio/vidéo, et qui fait les calculs lui-même. Et qui doit exister sur la plupart des pc puisqu'il est livré avec la plupart des programmes qui font appel à de l'audio ou vidéo (conversions, etc.). Chez moi je dois l'avoir en 3 ou 4 exemplaires, au moins. Ou sinon on trouve facilement à le télécharger. Et ensuite il suffit de faire: - Code:
-
EXECUTE_WAIT ...\ffmpeg.exe -i Monfichier.mp3 2>&1 | grep Duration | clip pour avoir le résultat dans le presse-papier (récup: duree$ = CLIPBOARD_STRING_PASTE$) sous la forme suivante: - Citation :
- Duration: 00:09:21.19, start: 0.025057, bitrate: 128 kb/s
- le 2>&1 c'est pour renvoyer la sortie sur la sortie standard, au lieu de la sortie erreurs qui est implicite. - le grep Duration c'est pour ne récupérer que la donnée durée (Duration) parmi toutes les autres infos renvoyées. Si on veut vraiment se plonger dans le format mp3: http://mgc99.free.fr/InfoMP3.htmlBon courage ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 9 Avr 2015 - 23:41 | |
| Il y a bien un Tag pour la durée mais il est variable il peut se faire appeler "TIME" ou "TLE" Cela fait deux passes de lecture pour le trouver. Il ne vaut mieux pas que le fichier MP3 soit un concert complet de plus d' une heure... Quoi que, tu peux limiter la recherche de l' octet 0 aux octets marqués 255,251. Bon, j' arrête le chinois... | |
| | | Francis-mr
Nombre de messages : 186 Date d'inscription : 26/11/2012
| Sujet: Re: lecteur MP3 aléatoire Ven 10 Avr 2015 - 9:33 | |
| Bonjour et merci pour vos réponses.
Je me suis rendu compte que l’extraction de la durée d’un fichier MP3 n’est effectivement pas simple en regardant les discussions avec la commande PLAY et en cherchant sur le net ou j’étais tombé sur le lien donné par JL35.
C’est pour cela qu’avec mon petit niveau j’ai trouvé plus facile d’adapter un fichier Excel existant (mp3filelister.xls). Celui-ci exploite "shell32.dll" et il est possible d’extraire toutes les infos en donnant leurs numéros. Exemple : n°14 l’album, n°16 le genre, n°20 l’artiste, n°21 le titre, n°27 la durée, etc…
Il est peut-être faisable d’arriver au même résultat en utilisant "shell32.dll" avec Panoramic, mais cela n’est pas dans mes capacités. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 10 Avr 2015 - 12:43 | |
| Pourrait tu mettre ce fameux fichier xls sur un webdav ou en téléchargement quelque part ? Pour savoir si c' est faisable, il faudrait d' abord voir le fichier en question et l' appel à cette dll. | |
| | | Francis-mr
Nombre de messages : 186 Date d'inscription : 26/11/2012
| Sujet: Re: lecteur MP3 aléatoire Ven 10 Avr 2015 - 13:25 | |
| J'ai mis sur mon webdav dans le répertoire "LecteurMP3" le fichier "mp3filelister.xls" de John Walkenbach et ma version simplifiée "ListeurMP3.xls" | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: lecteur MP3 aléatoire Ven 10 Avr 2015 - 14:56 | |
| Tiens Francis-mr, j'ai un petit cadeau pour toi: durée d'une musique mp3 sans ressources externes, sous forme de sub qui rend la durée sous la forme hh:mm:ss, avec un exemple d'appel: - Code:
-
DIM f$,a$ f$ = "Z:\Allegro.mp3": ' ... à adapter... DureeMp3(f$) a$ = CLIPBOARD_STRING_PASTE$: PRINT a$ END
SUB DureeMp3(f$) ' durée du fichier mp3 f$, rendue dans le presse-papier sous la forme hh:mm:ss DIM_LOCAL q$,scr$ q$ = CHR$(34) scr$ = "C:\TEMP\Duree.vbs" FILE_OPEN_WRITE 9,scr$ FILE_WRITELN 9, "FileName = wscript.arguments (0)" FILE_WRITELN 9, "with CreateObject("+q$+"Scripting.FileSystemObject"+q$+").GetFile(FileName)" FILE_WRITELN 9, " Foldername = .ParentFolder" FILE_WRITELN 9, " FileName = .Name" FILE_WRITELN 9, "End With" FILE_WRITELN 9, "with CreateObject("+q$+"Shell.Application"+q$+").Namespace(Foldername)" FILE_WRITELN 9, " wsh.echo .GetDetailsOf(.Parsename(FileName), 27)" FILE_WRITELN 9, "end with" FILE_CLOSE 9 EXECUTE_WAIT "cmd.exe /c cscript.exe "+scr$+" "+q$+f$+q$+" | clip" FILE_DELETE scr$ END_SUB NB Je suis sous W7, pour XP je crois qu'il faut mettre 21 au lieu de 27 dans le script vbs (ligne wsh.echo... 27), et 34 pour W 2000 | |
| | | Francis-mr
Nombre de messages : 186 Date d'inscription : 26/11/2012
| Sujet: Re: lecteur MP3 aléatoire Ven 10 Avr 2015 - 15:57 | |
| Merci à ygeronimi pour sa curiosité et JL35 pour la sub. Ça marche super Je vais pouvoir modifier mon code pour ne pas avoir de liste à créer Comme quoi, j'ai encore beaucoup de chose à apprendre à mon âge. | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: lecteur MP3 aléatoire Ven 10 Avr 2015 - 16:38 | |
| A ton âge... en effet tu es encore jeune, tu as le temps d'en apprendre encore pas mal ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: lecteur MP3 aléatoire Ven 10 Avr 2015 - 16:40 | |
| Et heureusement sinon la vie serait triste | |
| | | Francis-mr
Nombre de messages : 186 Date d'inscription : 26/11/2012
| Sujet: Re: lecteur MP3 aléatoire Ven 10 Avr 2015 - 20:48 | |
| Voila mon code modifié avec la sub de JL35. Il suffit de mettre le fichier dans un répertoire contenant des fichiers MP3 et de le lancer. Il est possible de changer de titre manuellement en cliquant sur le form. - Code:
-
dim a$, b%, c%, d$, m%, s%, t$ :Label JOU
width 0,500 :height 0,50 :left 0,screen_x-520 :top 0,20 :border_small 0 Caption 0,"Lecture aléatoire de fichiers MP3" :font_bold 0 :on_click 0,JOU dlist 1 :sound 2 :timer 3 a$=file_find_first$ while a$<>"_" if upper$(right$(a$,3))="MP3" then item_add 1,a$ a$=file_find_next$ end_while file_find_close c%=count(1) if c%<2 then message "Le répertoire actif doit contenir au minimum 2 fichiers MP3." :terminate gosub JOU end
JOU: cls :b%=int(rnd(c%))+1 if b%=m% then gosub JOU m%=b% d$=item_read$(1,b%) DUREE(d$) t$=trim$(right$(clipboard_string_paste$,7)) print left$(item_read$(1,b%),len(item_read$(1,b%))-4) print_locate 450,0 :print t$ file_load 2,item_read$(1,b%) :play 2 s%=(val(left$(t$,2))*60)+val(right$(t$,2)) timer_interval 3,s%*1000 on_timer 3,JOU return sub DUREE(d$) :' Merci JL35 dim_local q$ : q$=chr$(34) file_open_write 1,"Duree.vbs" file_writeln 1,"FileName = wscript.arguments (0)" file_writeln 1,"with CreateObject("+q$+"Scripting.FileSystemObject"+q$+").GetFile(FileName)" file_writeln 1," Foldername = .ParentFolder" file_writeln 1," FileName = .Name" file_writeln 1,"End With" file_writeln 1,"with CreateObject("+q$+"Shell.Application"+q$+").Namespace(Foldername)" file_writeln 1," wsh.echo .GetDetailsOf(.Parsename(FileName), 27)" :' mettre 21 pour Win XP au lieu de 27 file_writeln 1,"end with" file_close 1 execute_wait "cmd.exe /c cscript.exe Duree.vbs "+q$+d$+q$+" | clip" file_delete "Duree.vbs" end_sub | |
| | | Contenu sponsorisé
| Sujet: Re: lecteur MP3 aléatoire | |
| |
| | | | lecteur MP3 aléatoire | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |