2010-10-18 10 views
2

J'ai essayé d'utiliser directshowlib-2005 en installant k-lite mega codec pack. Il ne peut pas trouver la durée d'un fichier mp4 ou un fichier f4v (avi, wmv et flv n'a pas de problème). J'utilise ImediaSeeking interface de directshowlib-2005 pour trouver la durée. Mais dans le cas de mp4 et f4v la méthode GetDuration renvoie zéro.Comment trouver la durée d'une vidéo mp4 ou f4v téléchargée?

Je sais que c'est un problème de codec, mais je ne sais pas quel codec doit être installé pour obtenir la durée de mp4 ainsi que les fichiers f4v.

Le code que je utilise est illustré ci-dessous:

static public bool GetVideoLength(string fileName, out long length) 
    { 
     DirectShowLib.FilterGraph graphFilter = new DirectShowLib.FilterGraph(); 
     DirectShowLib.IGraphBuilder graphBuilder; 
     //DirectShowLib.IMediaPosition mediaPos=null; 
     DirectShowLib.IMediaSeeking mediaPos; 
     length = 4294967296; 

     try 
     { 
      graphBuilder = (DirectShowLib.IGraphBuilder)graphFilter; 
      graphBuilder.RenderFile(fileName, null); 
      //mediaPos = (DirectShowLib.IMediaPosition)graphBuilder; 
      mediaPos = (DirectShowLib.IMediaSeeking)graphBuilder;     
      // mediaPos.get_Duration(out length); 
      mediaPos.GetDuration(out length); 

      return true; 
     } 
     catch 
     { 
      return false; 
     } 
     finally 
     {    
      mediaPos = null; 
      graphBuilder = null; 
      graphFilter = null;    

     } 
    } 

Quelqu'un peut-il me aider s'il vous plaît en me disant le codec exact qui doit être installé pour trouver la durée mentionnée ci-dessus?

+0

Cette réponse à une question légèrement différente que j'ai posée fonctionnerait probablement pour vous: http://stackoverflow.com/questions/3936816/querying-an-audio-video-file-for-information/3938722#3938722 – TRiG

+0

Et MP4 les fichiers peuvent contenir une variété de codecs. Pourrait être H.264 (assez probable), ou pourrait bien être quelque chose d'autre. – TRiG

+0

Salut, Tout en recherchant pourquoi mon code ne fonctionne pas pour mp4, j'ai trouvé la déclaration suivante: "Peu importe que ce soit dans un conteneur ou non, il importe seulement si vous avez un analyseur/lecteur pour cela Il ya est pas analyseur de stock DirectShow pour lire les fichiers H.264 bruts et aucun tiers que je peux penser.En outre, si IMediaSeeking fonctionnerait avec un tel fichier brut dépend de l'implémentation. Les filtres associés à 264 utilisent MPEG2Video ou VideoInfo2 et ni l'un ni l'autre ne fonctionne avec MediaDet. Vous devez donc créer le graphique vous-même. " pouvez-vous m'aider? – Harun

Répondre

1

J'utiliserais simplement MediaInfo. Il y a aussi un CLI pour que vous puissiez l'appeler depuis votre code et obtenir cette information. Il gère à peu près toutes sortes de codecs et de conteneurs.

Questions connexes