叠加图像缩小和移动
Overlay image zoom out and move
我有一个带有图像叠加层的视频。图片在前 10 秒设置为几乎全屏,之后我需要将图片缩小到较小的尺寸并将其放在视频其余部分的左下角。
目前我将输入图像拆分并叠加到视频上,没有过渡,一张用于“大”图片,一张用于“小”图片,效果很好。
我想做的是一个“缩小移动”的效果,让它从中心大图到小图更平滑。
这是我当前的复杂过滤器:
-i "video.mp4"
-i "img.jpg"
-filter_complex "[1:v]split=2[img10][img20];[img10]scale=1469:856[img11];[img20]scale=293:171[img21];[0:v][img11]overlay=(main_w-overlay_w)/2:(main_h - overlay_h)/2:enable='between(t,0,10)',fade=out:st=9:d=1:alpha=1[vid];[vid][img21]overlay=10:(main_h-overlay_h-40):enable='gte(t,10)'"
-crf 18 -c:a copy "out.mp4"
如何将其制作成具有缩小+移动效果的单个图像叠加层?
使用 ffmpeg 4.3 或更高版本,您可以为比例参数设置动画。然后动画叠加参数。
ffmpeg
-i "video.mp4"
-loop 1 -i "img.jpg"
-filter_complex "[1:v]scale=w='if(between(t,10,14),1469-(1469-293)*(t-10)/4,if(lt(t,10),1469,293))':h='if(between(t,10,14),856-(856-171)*(t-10)/4,if(lt(t,10),856,171))':eval=frame[img];[0:v][img]overlay=x='if(between(t,10,14),(W-w)/2-((W-w)/2-10)*(t-10)/4,if(lt(t,10),(W-w)/2,10))':y='if(between(t,10,14),(H-h)/2-((H-h)/2-(H-h-40))*(t-10)/4,if(lt(t,10),(H-h)/2,H-h-40))':shortest=1"
-crf 18 -c:a copy "out.mp4"
我有一个带有图像叠加层的视频。图片在前 10 秒设置为几乎全屏,之后我需要将图片缩小到较小的尺寸并将其放在视频其余部分的左下角。
目前我将输入图像拆分并叠加到视频上,没有过渡,一张用于“大”图片,一张用于“小”图片,效果很好。 我想做的是一个“缩小移动”的效果,让它从中心大图到小图更平滑。
这是我当前的复杂过滤器:
-i "video.mp4"
-i "img.jpg"
-filter_complex "[1:v]split=2[img10][img20];[img10]scale=1469:856[img11];[img20]scale=293:171[img21];[0:v][img11]overlay=(main_w-overlay_w)/2:(main_h - overlay_h)/2:enable='between(t,0,10)',fade=out:st=9:d=1:alpha=1[vid];[vid][img21]overlay=10:(main_h-overlay_h-40):enable='gte(t,10)'"
-crf 18 -c:a copy "out.mp4"
如何将其制作成具有缩小+移动效果的单个图像叠加层?
使用 ffmpeg 4.3 或更高版本,您可以为比例参数设置动画。然后动画叠加参数。
ffmpeg
-i "video.mp4"
-loop 1 -i "img.jpg"
-filter_complex "[1:v]scale=w='if(between(t,10,14),1469-(1469-293)*(t-10)/4,if(lt(t,10),1469,293))':h='if(between(t,10,14),856-(856-171)*(t-10)/4,if(lt(t,10),856,171))':eval=frame[img];[0:v][img]overlay=x='if(between(t,10,14),(W-w)/2-((W-w)/2-10)*(t-10)/4,if(lt(t,10),(W-w)/2,10))':y='if(between(t,10,14),(H-h)/2-((H-h)/2-(H-h-40))*(t-10)/4,if(lt(t,10),(H-h)/2,H-h-40))':shortest=1"
-crf 18 -c:a copy "out.mp4"