ffmpeg конвертирует PNG и JPG в анимированные GIF с кроссфейд рамками - PullRequest
0 голосов
/ 08 июня 2019

Я пытаюсь с помощью ffmpeg преобразовать некоторые изображения в анимированный GIF с эффектом перекрестного затухания.

Я использовал эту веб-страницу в качестве примера того, что я пытаюсь сделать:

https://ezgif.com/maker

Я делюсь здесь

https://wetransfer.com/downloads/a28b8405e86a6d2bf355ea997dcccc0220190608090244/7461f8a6cf8c27be629527152f2a491a20190608090244/d7dae9?utm_campaign=WT_email_tracking&utm_content=general&utm_medium=download_button&utm_source=notify_recipient_email

5 изображений (1.png, 2.jpg, 3.jpg, 4.jpg, 5.jpg) и результат, полученный от ezgif (result.gif)

Я пытался использовать:

https://superuser.com/questions/1002562/convert-multiple-images-to-a-gif-with-cross-dissolve

Для создания палитры

 ffmpeg \
 -loop 1 -t 1 -i 1.png \
 -loop 1 -t 1 -i 2.jpg \
 -loop 1 -t 1 -i 3.jpg \
 -loop 1 -t 1 -i 4.jpg \
 -loop 1 -t 1 -i 5.jpg \
 -filter_complex \
 "[1:v][0:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b1v]; \
  [2:v][1:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b2v]; \
  [3:v][2:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b3v]; \
  [4:v][3:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b4v]; \
  [0:v][b1v][1:v][b2v][2:v][b3v][3:v][b4v]     [4:v]concat=n=9:v=1:a=0,fps=10,scale=320:-1:flags=lanczos,palettegen[v]" \
 -map "[v]" palette.png

и затем получите вывод

 ffmpeg -loop 1 -t 1 -i 1.png -loop 1 -t 1 -i 2.jpg -loop 1 -t 1 -i 3.jpg -loop 1 -t 1 -i 4.jpg -loop 1 -t 1 -i 5.jpg \ -i palette.png \
 -filter_complex \
 "[1:v][0:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b1v]; \
  [2:v][1:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b2v]; \
  [3:v][2:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b3v]; \
  [4:v][3:v]blend=all_expr='A*(if(gte(T,0.5),1,T/0.5))+B*(1-(if(gte(T,0.5),1,T/0.5)))'[b4v]; \
  [0:v][b1v][1:v][b2v][2:v][b3v][3:v][b4v]    [4:v]concat=n=9:v=1:a=0,fps=10,scale=320:-1:flags=lanczos[c];[c]     [5:v]paletteuse[v]" \
 -map "[v]" out.gif

Но я не получаю ожидаемого результата.

Может кто-нибудь помочь мне в этом?

Спасибо,

...