Bonsoir,
J'utilise OpenCV 2.1 sous Windows 7. Je souhaite créer un flux vidéo identique à celui en entrée. Pour cela, je fais :
Le problème est que le programme plante sur la dernière ligne. Après investigation, il s'agit d'un problème de codec car la fonction cvGetCaptureProperty(capture, CV_CAP_PROP_FOURCC) semble retourner 0.0
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 // ouverture du flux vidéo à partir du fichier test.avi capture = cvCaptureFromFile("test.avi"); // créer d'un video writer CvVideoWriter* writer = cvCreateVideoWriter("res.avi", //CV_FOURCC('P','I','M','1'), //CV_FOURCC('M','J','P','G'), cvGetCaptureProperty(capture, CV_CAP_PROP_FOURCC), cvGetCaptureProperty(capture, CV_CAP_PROP_FPS), cvSize(w, h) ); // get a frame image = cvQueryFrame(capture); // write a frame cvWriteFrame(writer, image );
De même en passant CV_FOURCC('P','I','M','1') ou CV_FOURCC('M','J','P','G'), le programme plante sur la même ligne.
En mettant -1 à ce paramètre, cela marche et j'ai une fenêtre qui s'ouvre me demandant de choisir le codec à utiliser mais quelque soit mon choix, la vidéo en sortie est beaucoup plus grosse que celle en entrée.
Je voudrais juste "dupliquer" une vidéo passée en entrée. (bien sur à termes, il y aura des traitements intermédiaires)
Il faut savoir que j'ai un warning :
Apparemment ce n'est pas grave... mais peut être que le problème vient de là mais aucune solution a été trouvé pour virer ce message à part utiliser Linux pour recompiler la lib !Compiler did not align stack variables. Libavcodec has been miscompiled
and may be very slow or crash. This is not a bug in libavcodec,
but in the compiler. You may try recompiling using gcc >= 4.2.
Do not report crashes to FFmpeg developers.
Merci et bonne soirée![]()
Partager