Mux solo le immagini
Puoi semplicemente combinare le immagini JPG per creare un video:
ffmpeg -framerate 30 -i input%03d.jpg -codec copy output.mkv
Si noti che se si omette, verrà applicato -framerate
un valore predefinito di -framerate 25
input.
Ottimizzazione senza perdite
È possibile utilizzare jpegtran
per eseguire l'ottimizzazione senza perdita di dati su ciascun fotogramma che può fornire un notevole risparmio di dimensioni del file:
mkdir outputdir
for f in *.jpg; do jpegtran -optimize -copy none -perfect -v "$f" > "outputdir/$f"; done
Ora mux con ffmpeg
come mostrato sopra.
Verifica che sia effettivamente senza perdite
Il muxer framehash può essere utilizzato per confrontare l'hash univoco di ciascun frame per garantire che il risultato sia davvero senza perdite:
$ 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
...
Negli esempi precedenti ogni frame associato per l'input e l'output condividono lo stesso hash garantendo che i frame siano identici e che l'output sia senza perdita.
Vedi anche