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++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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

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