ffmpeg масштабирует видео динамически (сжатие назад) или масштабирование до меньшего, чем оригинал - PullRequest
3 голосов
/ 11 июля 2020

У меня есть 2 видео, я пытаюсь наложить одно на другое, чтобы оно уменьшилось в анимированном виде, пока не станет похоже на настройку «картинка в картинке». Затем, через несколько секунд он должен снова масштабироваться.

Это то, чего я пытаюсь достичь (это будут видео , не изображения ): введите описание изображения здесь

Это самое близкое, что мне удалось получить, но, что особенно важно, масштабирование «out» (в отличие от «in») не работает; так что, конечно, это не работает :

ffmpeg -i bg.mov -i top.mov -filter_complex "[0:v]zoompan=z='pzoom-0.1':d=1, setpts=PTS-STARTPTS[top]; [1:v]setpts=PTS-STARTPTS+2/TB, scale=1920x1080, format=yuva420p,colorchannelmixer=aa=1.0[bottom]; [top][bottom]overlay=shortest=0" -vcodec libx264 out.mp4

Это возможно с помощью ffmpeg?

1 Ответ

2 голосов
/ 11 июля 2020

Используйте масштабный фильтр с анимацией, доступный с версии 4.3.

Вот кое-что, что поможет вам начать. Это расширит верхний слой с высоты 480 пикселей до 1080 пикселей за 2 секунды, а затем обратно до 480 пикселей за 2 секунды.

ffmpeg -i bg.mov -i top.mov -filter_complex "[0:v]scale=1920x1080,setpts=PTS-STARTPTS[bg]; [1:v]setpts=PTS-STARTPTS+2/TB, scale=-1:'480+600*abs(sin((t-2)*2*PI/8))':eval=frame[top]; [bg][top]overlay" -vcodec libx264 out.mp4

...