我想在 10 秒内慢慢放大 .png,从头到尾。我找不到解决方案。我是 ffmpeg 新手,似乎找不到任何解决方案。
ffmpeg -i background.mkv -i img.jpg -filter_complex "[0:v]scale=1920x1080[bg]; [1:v] scale=-1:'480+(600*t)':eval=frame[top]; [bg][top]overlay=500:300" -vcodec libx264 out.mkv
.png 大致位于视频的中心。我正在使用在这里找到的解决方案https://stackoverflow.com/questions/62845459/ffmpeg-scale-down-video-dynamically-squeeze-back-or-zoompan-out-to-smaller-tha 但我将公式简化为线性 (480+(600*t))。如果覆盖层只是视频 (.mkv 或 .mov),则此解决方案有效,但对于 .png 或 .jpg 无效。
根据我的经验,zoompan 只能放大或缩小图像,但比例保持不变。我是否遗漏了什么?
先感谢您!
答案1
ffmpeg 将图像视为具有一帧的视频流。循环它以生成无限长度的视频流。在覆盖过滤器中设置最短标志,以便在背景视频结束时终止输出。
使用
ffmpeg -i background.mkv -loop 1 -i img.jpg -filter_complex "[0:v]scale=1920x1080[bg]; [1:v] scale=-1:'480+(600*t)':eval=frame[top]; [bg][top]overlay=500:300"shortest=1" -vcodec libx264 out.mkv