3

Код у меня работает (вроде). Чтобы попробовать, введите два изображения размером 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

Есть также некоторые проблемы с выравниванием данных и временем, вызванные масштабированием, но эти проблемы могут быть связаны с другой темой вопроса.

Спасибо!

1 ответ1

2

использование

ffmpeg \
-i images/25_test/31630738_0.jpg \
-loop 1 -i images/25_test/31630738_4.jpg \
-filter_complex \
"[0:v]format=yuva420p,scale=iw*10:ih*10,zoompan=z='min(zoom+0.0015,1.5)':d=250:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':s=640x480[first]; \
 [1:v]format=yuva420p,fade=t=in:st=0:d=1:alpha=1,trim=0:10,setpts=PTS+9/TB[second]; \
 [first][second]overlay" out.mp4

Масштабная панель продолжает переходить в плавный переход. yuva420p для первого изображения на самом деле не совсем; добавлено только для улучшения скорости (немного).

Приведенная выше команда работает для меня как есть, но согласно комментариям, можно добавить fifo к цепям фильтров, чтобы избежать пропадания кадров при медленных процессорах или очень больших изображениях.

[0:v]format=yuva420p,scale=iw*10:ih*10,zoompan=z='min(zoom+0.0015,1.5)':d=250:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':s=640x480,fifo[first]; \
[1:v]format=yuva420p,fade=t=in:st=0:d=1:alpha=1,trim=0:10,setpts=PTS+9/TB,fifo[second]; 

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