IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Probleme avec capCaptureStop


Sujet :

C++

  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Par défaut Probleme avec capCaptureStop
    bonjour tout le monde

    voila j'ai crée un logiciel permettant la capture video de webcam en continu et de garder que les fichier video que l'on souhaite.Mes fichier videos on une taille limite de n seconde (c'est l'utilisateur qui choisie).

    tout marche sauf lorsque je ferme la carpture d'une video pour pouvoir lancé la capture dans un aute fichier.

    Je vous montre le code de ma classe Webcam qui permet d'enregistrer dans un fichier puis arreter l'enregistrement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    void CCapture::CaptureAVIStart(char *Destination)
    {while (!capFileSetCaptureFile(this->hWnd_WC, Destination))
    {
        Sleep(50);
    }
    if(!capCaptureSequence(this->hWnd_WC))
    {
    MessageBox(NULL,"capCaptureSequence","capCaptureSequence",IDOK);
    }
    }
     
    void CCapture::CaptureAVIStop()
    {
    if(!capCaptureStop(this->hWnd_WC))
    {
    MessageBox(NULL,"capCaptureStop","capCaptureStop",IDOK);
    }
    if(!capCaptureAbort(this->hWnd_WC))
    {
    MessageBox(NULL,"capCaptureAbort","capCaptureAbort",IDOK);
    }
    }
    Capture Stop et CaptureAbort on une erreur de temps en temps.

    J'appel CaptureAVIStart et CaptureAVIStop toute les n seconde.

    Voila si quelqu'un viot pourquoi il ia une erreur de temps en temps et comment je peux resoudre se probleme merci beaucoup.

  2. #2
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    Tu te base sur quelle bibliothèque pour faire ta capture vidéo ?

    Donne nous un minimum d'informations précise si tu veux te faire aider...

  3. #3
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Par défaut
    Je me base sur la bliotheque VFW( video for windows).

    Je rajoute le code ou j'appel mes focntion qui demarre et arrete la capture.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    //on regarde si l'on a deja lancé une capture
    if (!nouveau)
    {
                 //on stop la capture
    	Capture[0].CaptureAVIStop();
    	nouveau=true;
     
    	if(enregistre==true)
    	{
    		Capture[0].addenreg(nomfichierenreg,tpsavant,tpsapres,tpsfichier,AVIPath,AVI);
    		enregistre=false;
    	}
    }
     
    //on recupere l'heure et la date actuelle
    GetLocalTime(&CurrentTime);
    //heurefichier est égale à l'heure actuelle en milliseconde
    heurefichier=(((((CurrentTime.wHour*60)+CurrentTime.wMinute)*60)+CurrentTime.wSecond)*1000+CurrentTime.wMilliseconds);
    //nom du fichier = a la date du jour + l'heure de creation du fichier en milliseconde
    sprintf(nomfichier,"%d%d.avi",CurrentTime.wDay,heurefichier);
    //nom du chemin + de nomfichier
    sprintf(AVI, "%s\\%s.avi",AVIPath ,nomfichier);
    //on lance la capture
    Capture[0].CaptureAVIStart(AVI);
    nouveau=false;
    Le message d'erreurs s'affiche lorsque j'appuie sur le bouton enregsitrer se qui entraine que la variable enregistre passe a true.

  4. #4
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    Si j'était toi, je ferais déjà, plutôt, comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    //on regarde si l'on a deja lancé une capture
    if (!nouveau)
    {
                 //on stop la capture
    	Capture[0].CaptureAVIStop();
     
    	if(enregistre==true)
    	{
    		Capture[0].addenreg(nomfichierenreg,tpsavant,tpsapres,tpsfichier,AVIPath,AVI);
    		enregistre=false;
    	}
    	nouveau=true;
    }
    Parce que une vidéo peut être longue à s'enregistrer sur disque, donc il faut mieux éviter de relancer une capture tant que ce n'est pas fini.

  5. #5
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Par défaut
    J'ai essayer ta solution mais sa ne marche toujours pas.
    Dans le Capture[0].addenreg j'ajoute juste des information a ma classe.

    La capture video se fait dans le Capture[0].CaptureAVIStart(AVI);

    Je ne comprend pas pourquoi de temps en temps la capture rencontre un probleme lors de la fermeture.

  6. #6
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Par défaut
    Je pense avoir trouver l'origine de mon probleme mais je ne sais pas comment le resoudre.

    Donc j'ai un probleme dans la capture de la webcam lorsque je demande a mon programme d'effectuer quelque chose.

    Donc je possede une fenetre ou j'affiche se que film mais webcam et des bouton un boutton demarer qui consite a dire au programme de commencer a enregsitrer en continue dans des fichier video d'une certaine longueur donc pour faire cela j'appel toutes les n secondes la fonction que j'ai mis dans mon second post.
    Et j'ai un boutton enregistrer qui met la valeur enregistre=true ce qui me permet une fois que l'on repasse de rajouter des informations a la classe webcam. Mais la je rencontre un probleme mon programme a un probleme pour fermer le fichier video en cour de sauvegarde.


    voila s'il faut d'autre explication n'esiter pas a demander j'expliquerai.

    Merci a tous

  7. #7
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    J'ai du mal à comprendre pourquoi tu n'appelles pas directement CaptureAVIStop() directement lors du clic sur le bouton ; plutôt que de passer par une variable supplémentaire ?

    Il y a une raison précise à ça ? Ou j'ai manqué un épisode ?

  8. #8
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 40
    Par défaut
    bin quand je click sur le boutton enregistrer je veux pas que sa arrete l'enregistrement en cour.
    Car mes fichiers vidéo doivent faire la meme taille.

    Donc quand j'appuie sur le boutton je change la valeur de ma variable puis une foi que j'ai fermer le fichier en cour d'enregistrement j'effectue les traitements que je dois faire avant d'en recommencer un enregistrement dans un nouveau fichier.

    J'ai essayer au lieu de passer par des buotons de travailler avec les touches du clavier et la sa marche nikel!!!. Je comprend pas pourquoi mais en faite chaque foi que je clique avec ma souris sur mon programme, sa fais planter l'enregistrement de mon fichier avi.

    La je comprend vraiment plus rien.

    Si quelqu'un comprend pourquoi j'ai se probleme merci beaucoup.

  9. #9
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    Je comprends pas trop la gestion de tes boutons.

    Normalement on fait comme ça pour avoir le moins de pbs. possibles :

    En attente d'enregistrement:
    - bouton stop désactivé
    - bouton enregistrement activé

    Pendant l'enregistrement :
    - bouton stop activé
    - bouton enregistrement désactivé

    Si ton programme doit faire en plus de la lecture, le mieux c'est d'ajouter une fenêtre supplémentaire : une pour l'enregistrement, et une pour la lecture.

Discussions similaires

  1. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  2. Problèmes avec le filtrage des ip
    Par berry dans le forum Réseau
    Réponses: 9
    Dernier message: 30/12/2002, 07h51
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo