Mux juste les images
Vous pouvez simplement multiplexer les images JPG pour faire une vidéo:
ffmpeg -framerate 30 -i input%03d.jpg -codec copy output.mkv
Notez que si vous omettez, -framerate
une valeur par défaut de -framerate 25
sera appliquée à l'entrée.
Optimisation sans perte
Vous pouvez utiliser jpegtran
pour effectuer une optimisation sans perte sur chaque trame, ce qui peut permettre de réduire considérablement la taille du fichier:
mkdir outputdir
for f in *.jpg; do jpegtran -optimize -copy none -perfect -v "$f" > "outputdir/$f"; done
Maintenant, mux avec ffmpeg
comme indiqué ci-dessus.
Vérifier qu'il est réellement sans perte
Le multiplexeur framehash peut être utilisé pour comparer le hachage unique de chaque trame afin de s'assurer que le résultat est vraiment sans perte:
$ ffmpeg -i input%03d.jpg -f framehash -
stream_index, packet_dts, packet_pts, packet_duration, packet_size, hash
0, 0, 0, 1, 460800, 29bcc2db3726c7dfec1826c5740f603f
0, 1, 1, 1, 460800, b5fdc23d93cbd043dc2b9290dc8378f0
0, 2, 2, 1, 460800, ee0709942f24b458fd2380d134dcb59d
...
$ ffmpeg -i output.mkv -map 0:v -f framehash -
stream_index, packet_dts, packet_pts, packet_duration, packet_size, hash
0, 0, 0, 1, 460800, 29bcc2db3726c7dfec1826c5740f603f
0, 1, 1, 1, 460800, b5fdc23d93cbd043dc2b9290dc8378f0
0, 2, 2, 1, 460800, ee0709942f24b458fd2380d134dcb59d
...
Dans les exemples ci-dessus, chaque trame associée pour l'entrée et la sortie partage le même hachage, garantissant que les trames sont identiques et que la sortie est sans perte.
Regarde aussi