2010-01-23 9 views
1

J'utilise DirectShowLib et SampleGrabber pour capturer des images vidéo d'un fichier AVI. J'accomplis cela en utilisant un générateur de graphes et deux filtres. Tout fonctionnait bien, j'ai pu initialiser le graphique et les filtres. J'ai ensuite ajouté du code pour obtenir des informations vidéo comme Dimension, Frame rate e.t.c. Pour cela j'ai utilisé IMediaDet. Mais lorsque je tente de l'initialiser:La récupération de la fabrique de classe COM pour le composant avec CLSID {...} a échoué en raison de l'erreur suivante: 80040154

Type t = Type.GetTypeFromCLSID(new Guid("65BD0710-24D2-4ff7-9324-ED2E5D3ABAFA")); 
IMediaDet mediaDet = (IMediaDet)Activator.CreateInstance(t); 

Le Activator.CreateInstance(t) lancer une exception:

Retrieving the COM class factory for component with CLSID {65BD0710-24D2-4FF7-9324-ED2E5D3ABAFA} failed due to the following error: 80040154.

Je ne pense pas que ce problème avec la construction comme les filtres et constructeur de graphique initialisez bien. Quelqu'un a-t-il une idée, ou existe-t-il d'autres API que je peux utiliser pour collecter des informations sur les fichiers AVI comme les dimensions, la fréquence d'images, la longueur de la vidéo?

Répondre

1

Je pense que vous avez mal tapé le Guid. Il est proche d'un pris en charge par qedit.dll, 65BD0711-24D2-4FF7-9324-ED2E5D3ABAFA, vous êtes au large d'un chiffre.

+0

J'utilisais Guid de IMediaDet. Ça a marché. Merci. – ata

0

0x80040154 - est une classe non enregistrée - généralement cela signifie une des deux choses - le CLSID est faux, ou le DLL/EXE qui implémente cette classe n'est pas (correctement) enregistré sur la machine.

Vous pouvez vérifier le registre sous HKCR/CLSID pour voir si cela est réellement enregistré sur la machine.

+0

ok, je ne peux pas le trouver. Vous avez une idée quelle DLL a cette interface? – ata

+0

Peur, non, nobugz pourrait bien avoir touché la racine du problème. – Ruddy