Qu'est-ce que Passé la durée de X. XXX trop grand " signifie pour vous?
Lors de l'encodage H. 264 en utilisant ffmpeg, j'ai le type de mises en garde en masse:
Past duration 0.603386 too large
Past duration 0.614372 too large
Past duration 0.606377 too large
Que signifient-ils? Je n'ai pas trouvé quelque chose de clair en ligne ou dans le ffmpeg documentation.
- Veuillez indiquer au ffmpeg questions video.stackexchange.com la bêta. Voir le ffmpeg balise description.
- Encore un autre stackexchange? Je suis de se confondre avec ceux de 100+ sous-sites, je ne suis pas sûr si c'est une direction positive qui stackexchange est à la tête de.
- Je suis d'accord, il vous fait long pour une époque plus simple... 🙂
- Je pense qu'il est. StackOverflow est pour la programmation, ce n'est pas de la programmation. Il y a un Q&Un site pour le traitement de la vidéo, c'est une question sur le traitement de la vidéo. Ce n'est pas de comprendre?
- Lire aussi la balise description.
Vous devez vous connecter pour publier un commentaire.
J'ai été faire des milliers de ces avertissements avec un particulier de l'encodage. J'ai été conversion de la vidéo en 1080p à 480p. À un point de montage, là où il y avait quelques louches de la vidéo en raison d'un défaut dans la source de vidéodisque, ces messages ont commencé à venir up et alors apparu, je pense, toutes les images par la suite. Ils s'en allait, comme ce court extrait:
L'original ffmpeg invocation est ceci:
La suite suggestions ici, j'ai d'abord ajouté -framerate 60000/1001 à l'entrée. Qui n'a pas améliorer quoi que ce soit. J'ai retenu -framerate et ajouté -r 60000/1001 à la sortie. Qui n'a toujours pas améliorer quoi que ce soit. Conservant les deux, j'ai enfin ajouté -async 1 -vsync 1. Cela a abouti à ma réception d'un avertissement simple, et c'est tout. Que l'invocation est:
La seule différence que j'ai trouvé dans les détails du vidage de MediaInfo a été la suppression de cette ligne trouvée dans l'original invocation, mais pas dans la seconde:
Cependant, j'ai vérifié la synchronisation A/V à proximité du début de la fichiers et près de la fin, et il n'y a pas de différence perceptible dans la synchronisation entre les deux fichiers. Leur temps de course ont également été la même, mais qui a été mesurée seulement à la seconde près, dans VLC. Donc j'ai vérifié le cadre des comptages à l'aide de ffmpeg comme suit:
et de la recherche pour "frame=#" près de la fin de la sortie.
S'avère la source vidéo a été 375226 images, l'original de l'invocation donné 375195 des cadres, et le deuxième appel a abouti à 375200. Ainsi, la deuxième invocation, avec infiniment moins de messages d'avertissement également diminué de 5 moins de cadres.
Des tests ultérieurs ont montré que -débit et d'-r ont été inutiles, et en utilisant simplement les deux sync drapeaux a été suffisante. Cela a produit des résultats identiques à la deuxième invocation ci-dessus, de sorte que la troisième et la plus simple invocation, j'ai trouvé pour résoudre le problème est: est-ce
Et encore un autre fichier par la suite produit un tas de ces mises en garde, même avec la synchronisation des drapeaux, mais en ajoutant le taux de drapeaux "fixe" (seul produit deux au lieu de milliers de mises en garde). Alors parfois, le deuxième appel lorsque la troisième ne l'est pas. Pour mes fins, je vais établir sur la deuxième invocation et d'espoir, il résout la plupart de ces problèmes.
C'était tous avec ffmpeg version 4.0.
-async 1 -vsync 1
fixe pour moi.L'un des responsables de la DVDStyler projet sur SourceForge dit cette sujet:
Ce message d'avertissement s'affiche lorsque vous essayez de coder une cadence élevée de la source à un faible taux de trame de sortie, ce qui signifie que les cadres doivent être abandonnées.
J'ai eu ce message d'erreur parce que j'ai voulu convertir une série d'images d'une vidéo:
Le problème semble être que, si aucun taux de rafraîchissement est de donner pour l'entrée, une cadence de 25 images par seconde est pris en charge:
Cela peut aussi être vu sur le nombre total de trames codées. J'ai eu 400 images, mais la commande ci-dessus seulement codé 384:
Les messages d'erreur disparaît par réglage de la fréquence d'entrée à la place si la fréquence d'images de sortie. La fréquence d'images de sortie sera automatiquement choisie pour être celle de l'entrée. De plus dans les nouvelles versions de ffmpeg, vous avez à surveiller, parce que lors de l'utilisation des images PNG avec la
-i
option ou plutôt laimage2
ouv4l2
format d'entrée, vous devez utiliser-framerate
au lieu de-r
, voir la documentation pour le-r
.Il est également possible de spécifier la fréquence d'images à la fois d'entrée et de sortie séparément:
Dans ce cas seulement 161/400 images seront codées. Les autres cadres intermédiaires seront supprimées.
Aussi le message d'erreur disparaît, je suppose, pour ne pas ralentir ffmpeg par le spamming sur la sortie standard, voir:
-r
travaillé où à l'aide de-framerate
n'a pas.ffmpeg -pattern_type glob -i '*.jpg' -filter:v "setpts=0.25*PTS" -r 50 "$( date "+%Y-%m-%d_%H%M%S")-timelapse-x4-50fps.mp4"
à présent, plus aucun avertissementffmpeg -framerate 50 -pattern_type glob -i '*.jpg' -filter:v "setpts=0.25*PTS" -r 50 "$( date "+%Y-%m-%d_%H%M%S")-timelapse-x4-50fps.mp4"
(note de l'-framerate 50
ajoutée pour l'entrée)À la recherche à la le code source il me semble que la différence entre le temps de présentation (pts) dans le flux d'entrée diffère de celui dans le flux de sortie par plus d'une limite fixe fixé à 0,6 .
Des extraits de la source:
...
Ce n'est qu'un rapide coup d'œil, n'hésitez pas à creuser plus profond.
format_video_sync = VSYNC_DROP
ouformat_video_sync = VSYNC_PASSTHROUGH
et voir si l'un de ceux qui est viable dans votre cas d'utilisation.-r
interrupteur à la position "fixe" ces mises en garde.Comme par FFmpeg question n ° 4700 -
Passé la durée 0.999992 trop grand
c'est seulement un avertissement.
Utilisation:
Pour l'arrêter.
Ned