1

Я пытаюсь пометить несколько изображений. Я нашел полезную часть кода в этой теме суперпользователя. Пока что я застрял в этой точке:

ffmpeg -loop 1 -i img0.jpg -loop 1 -i img1.jpg -i img2.jpg -f lavfi -i color=black \
-filter_complex "\
[0:v]scale=480x320,format=pix_fmts=yuva420p,fade=t=out:st=3:d=0.25:alpha=1[va0]; \
[1:v]scale=480x320,format=pix_fmts=yuva420p,fade=t=in:st=3:d=0.25:alpha=1,fade=t=out:st=6:d=0.25:alpha=1[va1]; \
[2:v]scale=480x320,format=pix_fmts=yuva420p,fade=t=in:st=6:d=0.25:alpha=1[va2]; \
[3:v]scale=480x320,trim=duration=9[over0];\
[over0][va0]overlay[over1]; \
[over1][va1]overlay=format=yuv420[over2]; \
[over2][va2]overlay=format=yuv420[outv]" \
-c:v libx264 -map [outv] -y -t 9 outcross.mp4

После 2-го клипа он становится черным. Кажется, что-то пропустил.

Я все еще новичок в FFmpeg, поэтому я не слишком знаком с выполнением нескольких операций.

2 ответа2

0

Вы пропустили -loop 1 для третьего изображения.

ffmpeg -loop 1 -i img0.jpg -loop 1 -i img1.jpg -loop 1 -i img2.jpg -f lavfi -i color=black -filter_complex "\
[0:v]scale=480x320,format=pix_fmts=yuva420p,fade=t=out:st=3:d=0.25:alpha=1[va0]; \
[1:v]scale=480x320,format=pix_fmts=yuva420p,fade=t=in:st=3:d=0.25:alpha=1,fade=t=out:st=6:d=0.25:alpha=1[va1]; \
[2:v]scale=480x320,format=pix_fmts=yuva420p,fade=t=in:st=6:d=0.25:alpha=1[va2]; \
[3:v]scale=480x320,trim=duration=9[over0];\
[over0][va0]overlay[over1]; \
[over1][va1]overlay=format=yuv420[over2]; \
[over2][va2]overlay=format=yuv420[outv]" -c:v libx264 -map [outv] -y -t 9 outcross.mp4

Также смотрите здесь для другого подхода.

-1

Это можно сделать с помощью фильтра частоты кадров:https://en.wikibooks.org/wiki/FFMPEG_An_Intermediate_Guide/image_sequence#Slideshow_with_crossfading_between_the_pictures

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .