Bonjour,
Je travaille sur un projet nécessitant de faire de la capture vidéo. Le principe est simple, je dois enregistrer ce qui se passe dans ma fenêtre et générer une vidéo à partir de cela.
Mon IHM est réalise avec Qt et lorsque le mode capture est activé, un QTimer fait un screenshot de la fenêtre et ajoute le pixmap (converti en cv::Mat) dans un cv::VideoWriter.
Voici le code de lancement de l'enregistrement :
Mon problème est le suivant : la taille de la vidéo montre très vite (un peu comme avec le logiciel FRAPS), ce qui est normal vu qu'il n'y a aucune compression. Ce qui m'ennuie, c'est que dès que la vidéo dépasse 2Go (soit environ 1 minute de capture) le lecteur n'arrive pas à la lancer (erreur C00D11B1 du Lecteur Windows Media). De plus la vidéo semble être bloqué à 4Go max. Si la vidéo fait 4Go, je peux la lancer à nouveau mais elle n'est pas bonne (problème de couleur, erreurs, ...).
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 // Get video size cv::Size videoSize = cv::Size(_mainWindow->width(),_mainWindow->height()); // Build filename QString fullFileName = _folder; fullFileName += _dateInFilename ? QDateTime::currentDateTime().toString("yyyyMMdd_hh'h'mm'mn'ss's'_") : ""; fullFileName += _filename + ".avi"; // Select codec int codec = cv::VideoWriter::fourcc('M', 'S', 'V', 'C'); // This codex works only with short video. // Open video file _writer.open(fullFileName.toStdString(), 6, FPS-5, videoSize, true); // Launch timer _timer.start();
Mes recherches sur le net ne donnent rien pour le moment. Avez-vous une idée sur comment résoudre ce problème ? J'ai tenté plusieurs codec mais la plupart ne génère même pas de vidéo...
Merci par avance pour votre aide.
Okami
Partager