Как сделать CrossFade 3 PNG, чтобы фон оставался прозрачным, чтобы я мог поместить его на фоновое видео

478
Jamie Stenhouse

Я пытаюсь взять 3 PNG-изображения с прозрачным фоном и сделать с ними видео с плавным переходом, чтобы затем я мог поместить это видео в фоновое видео. Я понимаю, что могу сделать это, возможно, в одной команде, но хотел бы сохранить это отдельно, так как фоновое видео может быть взаимозаменяемым. То, что я до сих пор есть;

ffmpeg -loop 1 -t 1 -i 1.png -loop 1 -t 1 -i 2.png -loop 1 -t 1 -i 3.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]; [0:v][b1v][1:v] [b2v][2:v]concat=n=5:v=1:a=0,format=yuv420p[v]" -map "[v]" out.mp4 

Кажется, это работает, но фон теперь черный, а не прозрачный, я попытался сделать вывод разных типов файлов (avi, mov и т. Д.), Но это не имеет никакого эффекта. Следующая команда, которую я выполняю:

ffmpeg -i out.mp4 -i video.mp4 -filter_complex "[0:v]scale=1080:-2[fg1];  [1:v]scale=1920:-1,setpts=PTS-STARTPTS[bg];[bg] [fg1]overlay=400:400:shortest=1,format=yuv420p[v]" -map "[v]" -movflags  +faststart final.mp4 

Это также, кажется, работает, но опять же видео, которое я накладываю, не имеет прозрачности, поэтому выглядит плохо. Есть ли способ, которым я могу заставить первое видео соблюдать прозрачность от оригинальных png? Если для этого требуется одна команда, я с удовольствием это сделаю, но в этот момент я столкнулся со стеной. Любая помощь приветствуется.

0

1 ответ на вопрос

0
Gyan

В первой команде измените format=yuv420pна format=yuva420p. Прозрачность требует альфа-канала, но вы в настоящее время конвертируете в формат без такового. format=yuva444pобеспечит немного лучшее качество.

И что более важно, вывод на -map "[v]" -c:v png out.mov

Похожие вопросы