none
Pourquoi IBasicVideo::GetCurrentImage(...) ne fonctionne pas ! RRS feed

  • Question

  • Bonjour,

    Impossible de faire fonctionner IBasicVideo::GetCurrentImage(...):

    Je n'était pas en pause dans un premier temps avec le contrôleur de Média, ce que j'ai réglé.

    J'avais l'erreur: VFW_E_NOT_PAUSED = 0x80040225, ce qui est normal.

    Mais maintenant, au moment ou je veux récupérer l'Image de ma WebCam,

    en étant bien en pause,

    j'ai l'erreur:

    E_UNEXPECTED =  0x8000FFFF

    J'ai essayé tous les code exemples, sur plusieurs caméra et aucunes ne fonctionne:

    Je constate que soit la documentation est incomplète,

    soit le Direct X pour la WebCam est bourré de bugs.

    Pour remarque le Handle de retour des commandes de Direct X  renvoie soit S_OK, mais de temps en temps (aléatoirement) une erreur, alors que la commande fonctionne.

    Exemple:

    Mise en pause du Flux : la Mise en pause du Contrôleur de média renvoie une erreur alors, que si on récupère son état c'est OK

    J'ai d’ailleurs vérifié que cette mise en pause pas faite, le IBasicVideo::GetCurrentImage(...) me revoyait l'erreur:

    VFW_E_NOT_PAUSED = 0x80040225

    Mais maintenant rien a faire pour faire fonctionner cette récupération d'une image.

    Est ce que quelqu’un a réussi à récupérer une image d'une Webcam ?

    Vue le nombre de questions sur Internet, il ne semble pas que celà fonctionne !

    Car j'ai même des écho de logiciels actuels qui plantent

    avec les nouvelles version de Direct X, alors qu'ils fonctionnaient avant les MAJ Microsoft.

    En mettant un GetStat( INFINITE, &pfs) juste avant le récupération,

    cela fonctionne aléatoirement:

    Une fois j'ai l'image, une fois j'ai rien ...

    Donc, il y a bien un PB sur Direct X !


    Bruno


    • Modifié bmoraut lundi 23 mars 2020 18:21
    lundi 23 mars 2020 16:35

Toutes les réponses

  • Bonjour Bruno,

    J'ai trouvé un article de blog sur ce sujet selon lequel la méthode GetCurrentImage renvoie l'erreur E_UNEXPECTED si l'opération de pause n'est pas terminée :

    Solve IBasicVideo :: GetCurrentImage returns 0x8000ffff (E_UNEXPECTED Catastrophic failure) error

    Avez-vous essayé de définir une valeur en millisecondes de la durée du time-out au lieu de INFINITE dans la méthode GetState ?

    Cordialement,
    Nina


    Microsoft propose ce service gratuitement, dans le but d'aider les utilisateurs et d'élargir les connaissances générales liées aux produits et technologies Microsoft. Ce contenu est fourni "tel quel" et il n'implique aucune responsabilité de la part de Microsoft.

    mardi 24 mars 2020 12:27
    Modérateur
  • Bonjour,

    merci, c'est très sympa de m'aider.

    J'essaie avec 2000 ms (2s).

    Par contre, je suis en VS 2010, car VS 2019 plante constamment, pour tout et n'importe quoi.

    Il m'a désorganisé plusieurs fois le bureau.

    Au fur et a mesure des versions, les plantages sont moins importants, mais restent aléatoires...

    Je l'ai depuis 8 mois, et impossible de le faire exécuter correctement le pg.

    Le Pg plante toujours avec la dernière version 16.5.1 aléatoirement, même dans du code Microsoft ou pour des affectations de variables !!!

    J'ai été très déçu par VS 2019 !

    Pas vous ?

    Pourtant j'ai un code de Capture avec Direct X qui fonctionne, et je souhaite l'intégrer à mon application,

    à la place de la gestion de la caméra par Direct X. mais celui-ci fonctionne que sous les Bib de VS 2019...

    donc c'est le serpent qui se mord la queue !

    Est-ce d’ailleurs une question de version de Direct X  à votre avis ?

    Pour ce qui est de l'essai: cela ne change rien: la capture se fait une fois sur 3, après avoir lancé plusieurs fois mon logiciel.

    Je vérifie bien que la caméra soit en pause, et elle me renvoie une image vide 2/3.Je pense qu'il sagit d'une mauvaise gestion de l'état de la caméra. Mais pourquoi cela fonctionne au troisième lancement à votre avis ?

    Mon logiciel fonctionnait parfaitement avant avec les commande Windows Capture.


    Bruno

    dimanche 29 mars 2020 17:02
  • Ce n'est pas ma question:

    SimpleCapture Sample : Demonstrates how to preview video from a capture device using Media Foundation.

    MFCaptureD3D : Direct 3D : Direct 3D and not Direct Show !

    directshow/capture/ : Sample capture graph builder class : ceci fonctionne déjà dans mon code !

    DirectShow/capture : utilise MFCreateCaptureEngine function, qui ne sera plus utilisé: 

    MFCreateCaptureEngine function :[MFCreateCaptureEngine is not supported and may be altered or unavailable in the future. ]

    Ma question concerne une fonction précise du DirectShow: IBasicVideo::GetCurrentImage(...)

    C'est gentil d'essayer de répondre, mais merci de répondre à la question de façon précise,

    Sinon cela fait juste perdre du temps, car cela ferme la question du forum et/ou ceux qui sont en mesure de répondre, croient que le pb est résolu.


    Bruno

    mardi 31 mars 2020 08:29
  • Ce n'est pas ma question

    Tu as écrit :

    J'ai essayé tous les code exemples, sur plusieurs caméra et aucunes ne fonctionne

    donc j'ai donné d'autres exemples de capture vidéo

    Mais puisque "cela fait juste perdre du temps,", vu que j'en ai perdu à chercher des exemples du SDK, je ne perdrai pas une seconde de plus...



    mardi 31 mars 2020 08:40