Videos streaming images jeux et buzz
Connexion






Perdu le mot de passe ?

Inscrivez-vous maintenant !
Menu Principal
Communauté




Invité
[Résolu] Question sur le Frame Rate d'un film [OpenCv]
 1  #1
FantômeInvité
Bien le bonjour !

Je ne sais pas si parmi les koreusiens, il y a des "experts" de la question :

J'ai utilisé opencv pour créer la vidéo ici à partir de celle-ci, la vidéo initiale contient 4426 images avec un Frame Rate de 24 fps, dans un script je sélectionne uniquement toutes les images facteurs de 4 (% 4 == 0), la dernière image devrait donc être la  4424ème et j'aurai du avoir 1106 images (4424/4 = 1106).

Cependant la dernière image est la 4129ème, je n'ai donc que 1033 images, pourtant la 4129ème est bien la dernière image de la vidéo !

J'ai fait déroulé toutes les images avec une boucle :

Citation :
vidcap = cv2.VideoCapture(r'C:\Users\xxxx\Desktop\emojis\Matrix.webm')
success,image = vidcap.read()
print('Nb of frames :',vidcap.get(7))
while success:   

...cur_frame = int(vidcap.get(1))
...success,image = vidcap.read()

print(cur_frame)


Citation :
Nb of frames : 4426.0
4129


J'a du rater un truc...

Contribution le : 18/09/2021 12:25

Edité par AymericCaron sur 24/9/2021 12:12:17
Signaler

-Flo-
 1  #2
Je poste trop
Inscrit: 08/01/2005 13:41
Post(s): 15182
Karma: 12550
@AymericCaron Je viens de voir ton post, je l'avais loupé.

Première remarque : pour une meilleure lisibilité de ton code, tu ne devrais pas faire référence aux propriétés de VideoCapture par leur numéro d'index, mais par leur nom. Donc en l'occurrence cv2.cv.CAP_PROP_FRAME_COUNT au lieu de 7, et cv2.cv.CAP_PROP_POS_FRAMES au lieu de 1.

La liste de ces propriétés est disponible dans la documentation.

Ensuite pour répondre à ta question, CAP_PROP_FRAME_COUNT est une valeur théorique. Elle est obtenue en lisant la metadata "nb_frames" qui peut exister telle quelle dans le header du fichier vidéo. Si cette metadata n'existe pas dans le fichier, elle va être estimée en multipliant la durée de la vidéo par le nombre de fps attendu.
Mais dans un cas comme dans l'autre ça ne veut pas dire que toutes les frames existent, et qu'elles ne sont pas corrompues.

Le seul moyen fiable pour connaître le nombre de frames effectives est de décoder réellement et entièrement la vidéo (ce que ne fait pas VideoCapture au moment de son initialisation), et donc de la parcourir frame par frame comme tu le fais dans ta boucle.

Contribution le : 24/09/2021 11:56
_________________
Signaler

Invité
 0  #3
FantômeInvité
@-Flo- Oki ! Merci !

J'avais finis par tomber sur un forum qui expliquait cela, aussi. Le nombre de frames exact sera encore moins dans le header si je chope la vidéo via un module complémentaire qui utilise FFmpeg sur Firefox, je suppose ? ^^

Dsl pour la promo...

Contribution le : 24/09/2021 12:12
Signaler


 Haut   Précédent   Suivant






Si vous êtes l'auteur d'un élément de ce site, vous pouvez si vous le souhaitez, le modifier ou le supprimer
Merci de me contacter par mail. Déclaré à la CNIL N°1031721.