J'ai récemment joué avec FFMPEG et j'essayais de convertir .avi
à .gif
Depuis d'autres méthodes que j'ai essayées jusqu'à présent, ne fonctionnaient pas si bien.
Ce que j'ai remarqué, c'est que, quand j'utilise cette commande:
ffmpeg -I filename.gif
Je peux voir certaines des informations de fichier, y compris le FPS.
Et j'ai vu que le SPF le plus élevé possible de sorte que la vidéo que vous convertit en GIF ne devienne pas plus lente, est de 50 fps.
Maintenant est-ce correct cependant? Le montant du FPS le plus élevé que vous puissiez avoir dans un GIF, de sorte qu'il ne devienne pas plus lent 50 FPS?
Donc, 60 fps gif n'existent pas?
Le Spécification GIF98A dit dans la section sur l'extension de contrôle graphique
vii) Temps de retard - Si non 0, ce champ spécifie le nombre de centièmes (1/100) d'une seconde pour attendre avant de continuer avec le traitement du flux de données. L'horloge commence à cocher immédiatement après que le graphique soit rendu. Ce champ peut être utilisé conjointement avec le champ Drapeau de saisie de l'utilisateur.
Ce qui signifie que la valeur la plus petite est 1 pour un taux d'image de 100 FPS (il sera difficile de rendre la plus petite valeur de la plupart des moniteurs ...), et la plus petite valeur la plus petite est 2 pour un taux d'image de 50 FPS, et la valeur suivante est 3 pour un taux d'image de 33,3 fps. Donc, exactement 60 fps n'est pas possible.
Notez que cette extension était destinée à une poignée de cadres avec un retard sur l'ordre des secondes (le délai maximum est d'environ 600 secondes), une résolution de 1/100 secondes était suffisante. Cela n'était certainement pas destiné à la vidéo, et c'est pourquoi le champ code pour retarder et non un taux de trame.
La fabrication de vidéos gifs est vraiment un abus de la spécification (même s'il est maintenant si commun que la plupart des gens ne réalisent probablement pas que, tout comme la plupart des gens ne réalisent pas que les gifs et les JPEG utilisent différents types de compression et sont destinés à être utilisés sur différents types d'images).
Utilisation de FFMPEG, il s'agit du format de base pour imiter une moyenne roulante de 60 FPS
ffmpeg -i video.mp4 -vf "settb=1/100,setpts='if(eq(N,0),0,if(not(mod(N,3)),PREV_OUTPTS+1,PREV_OUTPTS+2))'" -vsync vfr -r 100 out.gif
Pour lire ces fichiers avec FFMPEG, tout en préservant ces horaires, utilisez
ffmpeg -min_delay 1 -i out.gif ...
qui va montrer
Stream #0:0: Video: gif, bgra, 1280x720 [SAR 64:64 DAR 16:9], 60 fps, 100 tbr, 100 tbn, 100 tbc
C'est une question différente de savoir si un joueur donné remplit ces timings.