Код у меня работает (вроде). Чтобы попробовать, введите два изображения размером 640 * 480 пикселей.
Или посмотрите образец здесь: http://128.199.50.223/videos/test_12_temp.mp4
Вы можете смотреть с 15 секунд, чтобы увидеть проблему.
Когда вы попробуете это, вы увидите, что он увеличивает, затем исчезает *, а затем показывает второе изображение.
* Здесь возникает проблема. Вы заметите, что как только начинается постепенное исчезновение, [crossfade] вступает во владение. Так как [кроссфейд] использует оригинальную фотографию, а не последний кадр масштаба, происходит возврат к изображению до того, как оно было увеличено (по крайней мере, я так понимаю).
Итак, мой вопрос, как я могу использовать последний кадр масштаба увеличения (или продолжить масштаб увеличения) для затухания.
Вот код:
ffmpeg \
-loop 1 -i images/25_test/31630738_0.jpg \
-loop 1 -t 10 -i images/25_test/31630738_4.jpg \
-filter_complex \
"[0:v]trim=start=0:end=9,setpts=PTS-STARTPTS,scale=iw*10:ih*10,zoompan=z='min(max(zoom,pzoom)+0.0015,1.5)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':s=640x480[firstclip]; \
[1:v]trim=start=1,setpts=PTS-STARTPTS,setsar=1/1[secondclip]; \
[0:v]trim=start=9:end=10,setpts=PTS-STARTPTS[fadeoutsrc]; \
[1:v]trim=start=0:end=1,setpts=PTS-STARTPTS[fadeinsrc]; \
[fadeinsrc]format=pix_fmts=yuva420p,fade=t=in:st=0:d=1:alpha=1[fadein]; \
[fadeoutsrc]format=pix_fmts=yuva420p,fade=t=out:st=0:d=1:alpha=1[fadeout]; \
[fadein]fifo[fadeinfifo]; \
[fadeout]fifo[fadeoutfifo]; \
[fadeoutfifo][fadeinfifo]overlay[crossfade]; \
[firstclip][crossfade][secondclip]concat=n=3[output]" \
-map [output] videos/output.mp4
Есть также некоторые проблемы с выравниванием данных и временем, вызванные масштабированием, но эти проблемы могут быть связаны с другой темой вопроса.
Спасибо!