Meilleur auteur de réponses
Durée d'un fichier (video/musique) avec la classe FileInfo

Question
-
Bonjour,
je suis entrain de developper un client léger qui verifie les fichiers d'un repertoire et affiche differente information. Ces fichiers ont un point commun, ils ont chacun une durée (Music/Video).
Je voudrais savoir comment récupérer cette information tout en sachant qu'il aura différents formats.
il possible de la récuperer avec la classe "FileInfo" ? Si oui pouvez-vous m'orienter ? Si non est ce qu'il y a une autre classe ou librairie qu'on peut l'utiliser à sa place ?
merci d'avance :)
Cordialement, Merci de ne pas oublier de marquer les réponses à vos questions et de noter les interventions qui vous ont aidé
Réponses
-
merci pour vos aide j'ai réussit à avoir la duré avec bibliothèque WMP.dll.
using WMPLib; // Dans la fonction : var lecteur = new WindowsMediaPlayer(); var video = lecteur.newMedia(VideoPath); TimeSpan VideoDuration = TimeSpan.FromSeconds(video.duration);
mais je dommage que je ne peux pas voir plus détail comme la résolution de la vidéo ou encore le propriétaire
Cordialement, Merci de ne pas oublier de marquer les réponses à vos questions et de noter les interventions qui vous ont aidé
- Marqué comme réponse Aurel Bera mercredi 28 mai 2014 07:41
Toutes les réponses
-
Bonjour,
D'après ce que j'ai recherché, il existe un module de Microsoft appelé "WindowsAPICodePack" qui permet entre autres d'obtenir la durée d'un média à partir de Windows 7. Il ne semble plus être à son emplacement d'origine, à savoir les archives de MSDN, mais on peut encore l'obtenir via nuGet. Tape "Windows api code pack" comme recherche dans nuGet.
Autre possibilité que j'ai trouvé : utiliser la commande mciSendString via pinvoke. Tu déclare l'appel ainsi :[DllImport("winmm.dll")] public static extern int mciSendString(string lpstrCommand, StringBuilder lpstrReturnString, int uReturnLength, int hwndCallback);
puis tu peux l'utiliser ainsi :
private int GetMediaLength(string file) { string cmd = "open " + file + " alias monMedia"; StringBuilder response = new StringBuilder(255); mciSendString(cmd, null, 0, 0); mciSendString("set monMedia time format ms", null, 0, 0); mciSendString("status monMedia length", response, response.Capacity, 0); int nbMs = int.Parse(response.ToString()); return nbMS; }
- Proposé comme réponse Nimzozo jeudi 22 mai 2014 12:55
-
je ne sais pas exactement. C'est une question bête, mais je veux m'en assurer.
cette deuxième manipulation permet de récupérer la durée d'un fichier audio/Vidéo en seconde n'est ce pas??
je l'ai essayer et il me renvoie ce code d'erreur :
System.FormatException was unhandled by user code Message=Le format de la chaîne d'entrée est incorrect. Source=mscorlib StackTrace: à System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) à System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) à System.Int32.Parse(String s) à OctobreBleuWebManager.GestionRapportVideo.GetMediaLength(String file) dans D:\utilisateurs\abenjema\documents\visual studio 2010\Projects\OctobreBleuWebManager\OctobreBleuWebManager\GestionRapportVideo.aspx.cs:ligne 67 à OctobreBleuWebManager.GestionRapportVideo.Page_Load(Object sender, EventArgs e) dans D:\utilisateurs\abenjema\documents\visual studio 2010\Projects\OctobreBleuWebManager\OctobreBleuWebManager\GestionRapportVideo.aspx.cs:ligne 40 à System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) à System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) à System.Web.UI.Control.OnLoad(EventArgs e) à System.Web.UI.Control.LoadRecursive() à System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) InnerException:
Je ne sais pas ce qu'il veux dire. Un point important que j'ai oublié de le mentionner. Cette Solution est application ASP.netmerci d'avance :)
Cordialement, Merci de ne pas oublier de marquer les réponses à vos questions et de noter les interventions qui vous ont aidé
-
cette deuxième manipulation permet de récupérer la durée d'un fichier audio/Vidéo en seconde n'est ce pas??
En millisecondes en fait.
je l'ai essayer et il me renvoie ce code d'erreur :
System.FormatException was unhandled by user code Message=Le format de la chaîne d'entrée est incorrect. Source=mscorlib StackTrace: à System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) à System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) à System.Int32.Parse(String s) à OctobreBleuWebManager.GestionRapportVideo.GetMediaLength(String file) dans D:\utilisateurs\abenjema\documents\visual studio 2010\Projects\OctobreBleuWebManager\OctobreBleuWebManager\GestionRapportVideo.aspx.cs:ligne 67 à OctobreBleuWebManager.GestionRapportVideo.Page_Load(Object sender, EventArgs e) dans D:\utilisateurs\abenjema\documents\visual studio 2010\Projects\OctobreBleuWebManager\OctobreBleuWebManager\GestionRapportVideo.aspx.cs:ligne 40 à System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) à System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) à System.Web.UI.Control.OnLoad(EventArgs e) à System.Web.UI.Control.LoadRecursive() à System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) InnerException:
Je ne sais pas ce qu'il veux dire.J'avais testé cette 2ème solution sur des fichiers wav et mp3 et ça a fonctionné. Mais je n'ai pas testé sur des vidéos. Il faut voir si la chaîne de caractères renvoyée est vide. Si c'est le cas, tu auras cette exception forcément.
Sinon, as-tu essayé de télécharger le package nuGet dont je t'ai parlé?
Un point important que j'ai oublié de le mentionner. Cette Solution est application ASP.net
Oups, au temps pour moi, je n'avais pas tout de suite percuté alors que tu avais bien parlé de "client léger"...Là je ne sais pas si la solution est bien applicable...
-
Bonjour
Le plus probable cela vas fonctionner, s'il n'utilise pas des composantes Windows Forms.
Le problème sera d'avoir accès au système de fichiers, et sera un gros problème de sécurité.
Bien cordialement,
Aurel BERA, MSFT
MSDN Community Support. LE CONTENU EST FOURNI "TEL QUEL" SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE.
S'il vous plaît n'oubliez pas de "Marquer comme réponse" les réponses qui ont résolu votre problème. C'est une voie commune pour reconnaître ceux qui vous ont aidé, et rend plus facile pour les autres visiteurs de trouver plus tard la résolution. -
merci pour vos aide j'ai réussit à avoir la duré avec bibliothèque WMP.dll.
using WMPLib; // Dans la fonction : var lecteur = new WindowsMediaPlayer(); var video = lecteur.newMedia(VideoPath); TimeSpan VideoDuration = TimeSpan.FromSeconds(video.duration);
mais je dommage que je ne peux pas voir plus détail comme la résolution de la vidéo ou encore le propriétaire
Cordialement, Merci de ne pas oublier de marquer les réponses à vos questions et de noter les interventions qui vous ont aidé
- Marqué comme réponse Aurel Bera mercredi 28 mai 2014 07:41