Supposons que j'ai 5 images avec les délais respectifs entre chaque image :
- 60ms;
- 54ms;
- 70ms;
- 23ms;
- 40ms;
Comment puis-je indiquer cette information à FFmpeg
?
Supposons que j'ai 5 images avec les délais respectifs entre chaque image :
Comment puis-je indiquer cette information à FFmpeg
?
En plus de la méthode des multiples outils présentée sur https://stackoverflow.com/q/28086775/5726027, cela peut également être fait à travers une seule commande longue.
ffmpeg -i a1.jpg -i a2.jpg -i a3.jpg -i a4.jpg -i a5.jpg
-filter_complex
"[1]settb=1/1000,setpts=PTS+0.06/TB[b];
[2]settb=1/1000,setpts=PTS+0.054/TB[c];
[3]settb=1/1000,setpts=PTS+0.07/TB[d];
[4]split[4a][4b];
[4a]settb=1/1000,setpts=PTS+0.023/TB[e];
[4b]settb=1/1000,setpts=PTS+0.04/TB[f];
[0][b][c][d][e][f]concat=n=6"
-vsync vfr -r 1000 -video_track_timescale 1000 vt.mp4
Pour chaque image sauf la première, des filtres de timebase et de timestamp sont appliqués. Comme vous avez besoin d'une précision en millisecondes, la timebase est réglée à 1/1000 sec = 1 milliseconde. Ensuite, setpts ajoute le délai requis (en secondes). Comme je crois que le tout dernier frame de la vidéo a, en effet, la durée par défaut déterminée par le débit de codage, la toute dernière image doit être dupliquée. La première copie a la valeur PTS selon son délai, et la seconde a son PTS réglé sur la durée prévue de la dernière image.
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.