需求目标:给一个图片,使用ffmpeg实现聚焦到点A,然后从点A移动到点B,再移动到点C的效果,制作成一个视频。
实现思路:
因为查了下资料,没有查到怎么使用ffmpeg的一行命令实现两个不同滤镜效果按顺序实现,因此这里将 “从点A到点B” 和“从点B到点C”两个效果分别实现产出视频,然后再顺序拼接。
因此这里的关键效果是如何实现从“从点A到点B” 镜头聚焦和移动走位。
我并没有找到直接实现的资料,因此这里结合自己对zoompan这个filter的理解,研究出了实现命令。
最终效果:
- 原始图片: https://unsplash.com/photos/p74ndnYWRY4
- 效果:从某一个人脸移动到第二个,再移动到第三个
- 输出视频: https://www.bilibili.com/video/BV1zF411N7jn/?vd_source=94c3861f377873ab0c5abf449cde011e
zoompan
滤镜说明
参考链接:
- 官方zoompan
- How To Zoom In And Zoom Out Videos Using FFmpeg
- https://superuser.com/questions/784146/ffmpeg-how-to-create-5-second-video-zooming-out-effect-with-1-image
- https://el-tramo.be/blog/ken-burns-ffmpeg/ – – excellent reference
- http://underpop.online.fr/f/ffmpeg/help/zoompan.htm.gz – ffmpeg zoompan explain
基础用例详解
- 聚焦中心点
# 聚焦到图片center中心点,时长4秒
ffplay -i input.jpg -vf "zoompan=x='iw/2*(1-1/zoom)':y='ih/2*(1-1/zoom)':z='2':d=25*4:s=640x360"
# zoompan拆解
zoompan=
x='iw/2*(1-1/zoom)': # iw/2 代表要聚焦的x轴,zoom = 下面放大的比例
y='ih/2*(1-1/zoom)': # ih/2 代表要聚焦的x轴
z='2': # 聚焦放大的比例,这里代表2倍
d=25*4: # 输出帧数,默认25帧/秒,25*4 代表4秒
s=640x360 # 输出视频比例,可以设置和输入图片大小一致
- 聚焦其他用例
# 聚焦到top left
zoompan=
x='0': # iw/2 代表要聚焦的x轴,zoom = 下面放大的比例
y='0': # ih/2 代表要聚焦的x轴
z='2':
d=25*4:
s=640x360
# 聚焦到bottom right
zoompan=
x='iw*(1-1/zoom)': # iw/2 代表要聚焦的x轴,zoom = 下面放大的比例