Informations sur les fichiers (vidéo, sons)

morpheus262 Messages postés 461 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 16 février 2012 - 1 oct. 2007 à 08:56
cs_Gammacronosios Messages postés 49 Date d'inscription lundi 25 octobre 2004 Statut Membre Dernière intervention 23 février 2010 - 8 oct. 2007 à 13:27
Bonjour,

Je développe une petite application en VB.net (2005) qui consiste a lister le contenu de mes DVD, et CD mémoriser dans une base de données, pour une recherche futur plus rapide et efficace que chercher dans les DVD/CD un part un.

J'aimerais donc récuperer un certain nombre d'information sur mes fichiers et notamment les fichiers videos/sons. Je cherche en particulier a récuperer la durée d'une video ou d'un son et pourquoi pas la résolution dans le cadre d'une video mais ca c'est optionnel.

Comme Windows l'affiche directement, je me dis qu'on peut peut etre utiliser la DLL (ou autre) qui va bien dans VB mais je ne trouve pas laquelle.

Si vous avez des idées sur comment faire cela, si il faut une DLL particuliere ??

D'avance merci
Morpheus

<hr />Loi du plagiat industriel de Felson : <cite>Voler les idées d'une personne, c'est du plagiat. En voler à plusieurs, c'est de la recherche.</cite>

4 réponses

cs_Gammacronosios Messages postés 49 Date d'inscription lundi 25 octobre 2004 Statut Membre Dernière intervention 23 février 2010
1 oct. 2007 à 13:38
Salut morpheus262
Euh... j'ai peut-être une idée : utilise la DLL de windows media (wmp.dll) qui est dans le dossier system32 de windows (ou dans les composants COM).

Tu doit créer une variable de type WmpLib.WindowsMediaPlayer
Ensuite tu donne à la propriété "URL" le chemin de ton fichier, puis tu demande à ton objet windows media (WMP est le nom de ta variable par exemple) de se mettre sur stop avec WMP.Controls.Stop() et ainsi :
- tu récupères la durée du fichier avec WMP.CurrentMedia.DurationString
- tu récupères la taille avec WMP.CurrentMedia.ImageSourceWidth et WMP.CurrentMedia.ImageSourceHeight

N'oublies pas de vider ta variable WMP (WMP = nothing) à la fin de ton code !!

C'est un art la programmation, non
0
morpheus262 Messages postés 461 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 16 février 2012
1 oct. 2007 à 16:40
Salut Gammacronosios,

Merci pour ta réponse.
Dans l'état brut cela ne marche pas aussi facilement (apparement) mais tu m'as donné une nouvelle piste de recherche qui conduit a ce bout de code :

Dim Duration as string

Dim w As New WMPLib.WindowsMediaPlayer

Dim m As WMPLib.IWMPMedia = w.newMedia(Filename)

If m IsNot Nothing Then


Duration = m.durationString

End If

w.close()

Et qui donne bien la durée d'un fichier. (testé pour le moment avec mp3, mpg, et avi).

Je vais maintenant voir si sur le scan d'un DVD contenant plusieurs fichiers videos/musicaux, cela ne prend pas trop de temps.

++

Morpheus

<hr />Loi du plagiat industriel de Felson : <cite>Voler les idées d'une personne, c'est du plagiat. En voler à plusieurs, c'est de la recherche.</cite>
0
morpheus262 Messages postés 461 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 16 février 2012
3 oct. 2007 à 10:58
Je remonte le sujet...

La méthode marche bien mais uniquement pour les fichiers .wmv, et .avi; mais pas pour les autres.

Est ce que quelqu'un a une autre idée pour récuperer la durée d'un fichier vidéo (notamment extension .mpg)

<hr />Loi du plagiat industriel de Felson : <cite>Voler les idées d'une personne, c'est du plagiat. En voler à plusieurs, c'est de la recherche.</cite>
0
cs_Gammacronosios Messages postés 49 Date d'inscription lundi 25 octobre 2004 Statut Membre Dernière intervention 23 février 2010
8 oct. 2007 à 13:27
Ca devient un peu plus complexe là car peut-être WMP n'a pas le temps de récupérer la durée du fichier... dans ce cas, il faut attendre que wmp te retourne la durée avant de le fermer...

J'ai eu ce problème une fois... et la solution n'était pas trés simple :
Je te présente un peu le principe : il faut ouvrir le fichier avec wmp sous un autre thread, attendre un délai court, et récupérer la durée, puis fermer wmp...

Je testerai ça chez moi, je pourai t'envoyer la code si tu veux et si tu a compris un peu le principe...
Mais bon, pour moi, le mieux, c'est de trouver une solution par soit-même, mais ds ce cas c'est un peu complexe...

C'est un art la programmation, non
0
Rejoignez-nous