Moja stara wersja korzystała ze zbyt wielu kroków. W dodatku nie mogłem zmusić programu convert do ustawienia mniejszego opóźnienia pomiędzy ramkami niż 10. W przykładzie poniżej zrezygnowałem ze skalowania.
ffmpeg -i video.avi -r 10 -f image2pipe -vcodec ppm - | convert -delay 10 -loop 0 - gif:- | convert -layers Optimize - output.gifLepsza wersja (także bez skalowania). Kroków jest na tyle dużo, że zamknąłem wszystko w jednym skrypcie, ale convert nie jest już wykorzystywany, ponieważ sam ffmpeg dobrze sobie radzi z tworzeniem plików tego formatu:
#!/bin/sh palette="palette.png" video="video.avi" # filters="fps=15,scale=320:-1:flags=lanczos" filters="fps=25" mogrify -crop 384x362+8+30 +repage $(ls -v *.png) ffmpeg -r 100 -f image2 -i img-%3d.png $video ffmpeg -v warning -i $video -vf "$filters,palettegen" -y $palette ffmpeg -v warning -i $video -i $palette -lavfi "$filters [x]; [x][1:v] paletteuse" -y output.gifObraz jest znacznie płynniejszy.
Brak komentarzy:
Prześlij komentarz