ffmpeg -i myvid.mp4 -r 25 -t 100 image-%d.jpeg
Est-ce que la commande que j'utilise pour extraire des images et qu'elle fonctionne exactement comme prévu Cependant, j'aimerais aussi regarder les horodatages des images. Quelle que soit la précision. 100 millisecondes me suffisent. Ffmpeg peut-il faire cela?
Fournir des détails supplémentaires,
Lorsque j'exécute la commande ci-dessus, j'obtiens environ 100 JPEG. Je suppose qu'il y a une correspondance de 1 à 1 (ou beaucoup à 1) entre ces JPEG et les images de la vidéo. Je voudrais connaître l'horodatage de l'image qui a été sortie en tant qu'image JPEG 'i'.
De plus, j'ai essayé ffprobe mais je trouve qu'il rapporte même la durée de la vidéo de manière inexacte :(
Ce que vous pouvez faire est de "simuler" le processus d'écriture d'image en filtrant avec le filtre fps
, puis en utilisant ffprobe
pour afficher les horodatages des images générées. Cela signifie qu’à 25 ips, la 50ème image (comme votre 50ème image) aura un PTS de 2,00 secondes.
Vous le faites comme ça:
ffprobe -f lavfi -i "movie=input.mp4,fps=fps=25[out0]" -show_frames -show_entries frame=pkt_pts_time -of csv=p=0
Est-ce que la sortie:
0
0.04
0.08
0.12
0.16
...
Ce sont les horodatages pour chaque image de sortie. Vous pouvez réellement combiner la liste des cadres et les horodatages:
ls -1 image - *. jpeg> images.txt ffprobe -f lavfi -i "movie = input.mp4, fps = fps = 25 [out0]" -show_frames -show_entries frame = pkt_pts_time -of csv = p = 0> frames.txt coller des images.txt frames.txt> combine.txt
Va créer un fichier avec:
image-0001.jpeg 0
image-0002.jpeg 0.04
image-0003.jpeg 0.08
image-0004.jpeg 0.12
Notez que cela peut entraîner des lignes superflues s'il y a trop de cadres ou trop de lignes de sortie d'informations. Cela semble un peu inexact là.