Comment puis-je dire si une vidéo a un taux de trame variable? Je n'ai pas besoin de pouvoir le faire par programmation, je ne veux tout simplement pas avoir à installer un programme des centaines de mégaoctets; Par exemple, si je pouvais le faire avec le lecteur multimédia VLC, ce serait parfait.
FFMPEG a un filtre VFRDET à cette fin.
ffmpeg -i in -vf vfrdet -an -f null -
Dans le journal, vous verrez une lecture du formulaire,
[Parsed_vfrdet_0 @ 0000000003d8fec0] VFR:0.833333 (50/10) min: 23 max: 291)
Une valeur non nulle pour VFR indique un flux VFR. La première valeur entre parenthèses est le nombre de cadres d'une durée différentes que la durée attendue impliquée par la fréquence de cadre détectée du flux. La 2e valeur est le nombre de cadres ayant la durée attendue. La valeur VFR est le ratio du premier numéro à la somme des deux.
Un couple de mises en garde: une valeur très faible ou très élevée indique quelques cadres errants avec une durée non standard, généralement la première et/ou la dernière image. Celles-ci peuvent être considérées comme des CFR à la plupart des fins. Une valeur d'environ 0,50 indique que le flux a une fréquence de trame et/ou une base de temps pour laquelle la durée de trame noional ne peut pas être exprimée exactement dans le fuseau horaire du flux, de sorte que l'application qui a généré le fichier, oscillait la durée par ex. Si un ruisseau a un FPS de 6 et une base de temps de 1/100, les horodatages idéaux seront 0, 16.667, 33.334, 50.000, 66.667, 83,333, 100.000 pour la première seconde de la vidéo, mais les horodatages sont des entiers, donc le Muxer peut stocker 0, 16, 34, 50, 67, 83, 100. Cela pourrait apparaître comme un flux avec une valeur VFR de 0,5
Il suffit d'utiliser FFProbe
ffprobe -v quiet -print_format json -show_streams input
Et vérifier le avg_frame_rate
Paramètre du flux vidéo souhaité. Si la valeur de ce paramètre est une fraction comme celle-ci
"avg_frame_rate": "1205285219/50270287"
avec un dénominateur qui n'est pas 1, le fichier vidéo a une vitesse de trame variable.
Si la valeur est comme ça
"avg_frame_rate": "25/1"
assurez-vous que le flux a un taux de trame constant.