J'essaie d'écrire un logiciel d'enregistrement qui écrirait un flux vidéo entrant dans l'ordinateur vers un fichier avi. J'utilise OpenCV et videoInput.h pour gérer le code DirectShow. Juste au cas où cela est important j'utilise Visual Studio 2010 en tant que compilateur.OpenCV videoInput.h Vitesse de capture différente de la vitesse d'écriture
Le problème que je rencontre est que le fichier enregistré est lu plus rapidement que le fichier prévisualisé. Pas trop, mais juste assez pour être perceptible. EXEMPLE: L'aperçu de 10 secondes est un fichier d'environ 7 secondes, donc tout le monde bouge juste un peu trop vite.
if(bWriteVideo)
{
writer=cvCreateVideoWriter(szFileName,CV_FOURCC('D','I','V','X'),
fps,cvSize(width, height),isColor);
if(!writer) return 1;
}
if(bDisplayVideo)
cvNamedWindow("video", 0);
while(key != 'q')
{
if(VI.isFrameNew(nSource))
{
VI.getPixels(nSource, yourBuffer1, false, true);
frame = cvCreateImage(cvSize(width, height), IPL_DEPTH_8U, 3);
frame->imageData = (char*)yourBuffer1;
frame->imageDataOrigin = frame->imageData;
if(!frame) break;
// Display Image to Screen
if(bDisplayVideo)
cvShowImage("video" , frame);
if(bWriteVideo)
cvWriteFrame(writer, frame);
}
key = cvWaitKey (1000/fps);
}
Merci qui a aidé! J'ai fini par enlever complètement le "cvWatiKey" car il ne peut être utilisé que si la fenêtre OpenCV est générée et finalement c'est une application console, mais c'est l'attente qui l'a ralentie. – Kerigan