Bonjour,
Je me suis rendu compte récemment d'un comportement étrange de l'object VideoCapture.
Le programme tout simple suivant :
Me donne l'affichage suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 int main( int argc, char* argv[] ) { VideoCapture cap; Mat frame; cap.open("video.avi"); for (int i = 0; i < 10; i++) { cout << " timestamp = " << cap.get(CV_CAP_PROP_POS_MSEC) << endl; cap >> frame; } return 0; }
Le flux semble "sauter" 2 frames (FPS = 25).timestamp = 80
timestamp = 120
timestamp = 160
timestamp = 200
timestamp = 240
timestamp = 280
timestamp = 320
timestamp = 360
timestamp = 400
timestamp = 440
Sur une autre vidéo au format mp4, c'est 3 frames qui sont sautées.
Ma première question porte donc sur ce comportement. Est-ce que le "header" de la vidéo est contenue dans ces premières frames ? Ce qui expliquerait que le flux les saute...
Ma seconde question est directement liée, et porte sur le comportement de la méthode VideoCapture::set(CV_CAP_PROP_POS_MSEC, nb).
Le programme suivant :
M'affiche :
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 int main( int argc, char* argv[] ) { VideoCapture cap; Mat frame; cap.open("video.avi"); cap.set(CV_CAP_PROP_POS_MSEC, 80); for (int i = 0; i < 10; i++) { cout << " timestamp = " << cap.get(CV_CAP_PROP_POS_MSEC) << endl; cap >> frame; } return 0; }
Et enfin, si je lis une première frame avant de faire le set(), j'obtiens un résultat différent :timestamp = 560
timestamp = 600
timestamp = 640
timestamp = 680
timestamp = 720
timestamp = 760
timestamp = 800
timestamp = 840
timestamp = 880
timestamp = 920
Pouvez-vous mexpliquer un tel comportement ?timestamp = -40
timestamp = 0
timestamp = 40
timestamp = 80
timestamp = 120
timestamp = 160
timestamp = 200
timestamp = 240
timestamp = 280
timestamp = 320
Pour info, voici les caractéristiques de la vidéo (j'ai un comportement tout aussi imprévisible avec d'autres vidéos d'autres formats)
Merci d'avance !Metadata:
encoder : Lavf53.1.0
Duration: 00:01:44.76, start: 0.000000, bitrate: 5070 kb/s
Stream #0.0: Video: mpeg4, yuv420p, 640x480 [PAR 1:1 DAR 4:3], PAR 16:15 DAR 64:45, 25 tbr, 25 tbn, 25 tbc
Partager