2010-12-10 42 views
-7

cet extrait de code ne fonctionne pasJ'essaye de lire une durée de vidéo à partir d'un fichier, mais cela donne juste des zéros. Aidez-moi à

using WMPLib; 
class Program 
{ 
    static void Main(string[] args) 
    { 
     // this file is called Interop.WMPLib.dll 
     WindowsMediaPlayer wmp = new WindowsMediaPlayer(); 
     wmp.URL = @"c:\Wildlife.wmv"; 
     Console.WriteLine("Duration = " + wmp.currentMedia.durationString); 
     // write named attributes 
     Console.ReadKey(); 
    } 
} 

Il me donne des zéros. Quelqu'un peut-il aider?

+0

Kojomuratov poser des questions avec précaution) – sultan

+3

@STW: peut-être, peut-être, il est sa copie d'archivage pour un usage personnel. :) – Joe

+0

@Joe aha Assault.girls.2009 ... (: – sultan

Répondre

4

[modifier]

Ceci est le code de travail après les commentaires de Hans qui m'a aidé Passant à compiler et tester. Ce code compile et affiche la longueur du film.

using System; 
using WMPLib; 

namespace MediaPlayer 
{ 
    class Program 
    { 
     static WindowsMediaPlayer wmp = new WindowsMediaPlayer(); 

     static void Main(string[] args) 
     { 
      wmp.URL = @"c:\Wildlife.wmv"; 
      wmp.PlayStateChange += new _WMPOCXEvents_PlayStateChangeEventHandler(wmp_PlayStateChange); 
      Console.ReadKey(); 
     } 

     static void wmp_PlayStateChange(int NewState) 
     { 
      if (NewState == 3) 
      { 
       Console.WriteLine("Duration = " + wmp.currentMedia.durationString); 
      } 
     } 
    } 
} 

[ancienne réponse]

Je ne sais rien de ce genre de choses, mais voici mon avis sur la question. L'état du lecteur n'est pas là où il peut encore se reporter sur le média. Le code ci-dessous est juste jeté ensemble ici et ne pourrait même pas compiler. De MSDN:

Pour récupérer la durée des fichiers qui ne sont pas dans la bibliothèque de l'utilisateur, vous devez attendre pour Windows Media Player pour ouvrir le fichier; c'est-à-dire que l'OpenState actuel doit être égal à MediaOpen. Vous pouvez le vérifier en manipulant l'événement Player.OpenStateChange ou en vérifiant périodiquement la valeur de Player.openState.

using WMPLib; 
class Program 
{ 
    static void Main(string[] args) 
    { 
     // this file is called Interop.WMPLib.dll 
     WindowsMediaPlayer wmp = new WindowsMediaPlayer(); 
     wmp.URL = @"c:\TORRENT.KG\Assault.girls.2009.DVDRip.Rus.Eng.avi"; 
     wmp.PlayStateChange += new AxWMPLib._WMPOCXEvents_PlayStateChangeEventHandler(wmp_PlayStateChange); 
     Console.ReadKey(); 
    } 

    void wmp_PlayStateChange(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e) 
    { 
     if (e.newState == 3) 
     { 
      Console.WriteLine("Duration = " + wmp.currentMedia.durationString); 
     } 
    } 
} 
+0

@Pieter merci J'ai cherché quelque chose comme ça par la même chose écrire à http://stackoverflow.com/questions/4411519/c-how-to-read-things-like-id3-tag-for-a-video-files – sultan

+0

Vous devez vraiment compiler ceci avant de poster. Windows Forms trucs dans une application de la console –

+0

@Hans je n'ai pas le SDK et ne pouvait pas le trouver pour le télécharger alors je pensais que je lui donnerais quelque chose plutôt que rien, mais oui, vous avez raison, j'aurais dû le faire correctement – Pieter