You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FFmpeg技术问询:指定时段对视频特定区域无淡入淡出缩放的实现方案

FFmpeg技术问询:指定时段对视频特定区域无淡入淡出缩放的实现方案

嘿,这个需求用FFmpeg完全能搞定!你要的是在指定时间段内,对视频某个特定区域做无淡入淡出的缩放,且缩放后的画面直接叠加在原视频上对吧?我直接给你核心实现命令,再把每个参数对应到你需要的输入项,你照着改就行。

核心命令模板

-i input.mp4 \
-filter_complex "[0:v]crop=w=区域宽度:h=区域高度:x=中心点X-区域宽度/2:y=中心点Y-区域高度/2,scale=w=区域宽度*缩放级别:h=区域高度*缩放级别[zoomed_layer]; \
[0:v][zoomed_layer]overlay=x=(原视频宽度/2 - (区域宽度*缩放级别)/2):y=(原视频高度/2 - (区域高度*缩放级别)/2):enable='between(t,开始时间,结束时间)'" \
-c:a copy output.mp4

参数对应说明(直接替换成你的需求值就行)

  • 开始时间:你要启动缩放的时间点(单位:秒),比如第5秒就写5
  • 结束时间:缩放停止的时间点(单位:秒),如果是给时长的话,就用开始时间+时长,比如开始于第3秒、持续4秒,就写7
  • 中心点X/Y:你指定的缩放区域的中心坐标(相对于原视频的像素坐标)
  • 区域宽度/区域高度:你要缩放的原视频区域的尺寸(比如想放大一个640x360的区域,就填对应数值)
  • 缩放级别:放大倍数,比如要放大2倍就写2
  • 原视频宽度/原视频高度:你可以先用ffmpeg -i input.mp4查看原视频分辨率,或者更智能的用FFmpeg内置变量iw(原视频宽度)和ih(原视频高度)替换,这样不用手动查分辨率

举个实际例子

假设你的原视频是1920x1080,需求是:

  • 从第3秒开始,持续4秒(到第7秒)
  • 中心点在画面正中心(960,540)
  • 要缩放的区域是640x360
  • 缩放级别是2倍

对应的命令就是:

-i input.mp4 \
-filter_complex "[0:v]crop=w=640:h=360:x=960-320:y=540-180,scale=w=640*2:h=360*2[zoomed_layer]; \
[0:v][zoomed_layer]overlay=x=(iw/2 - (640*2)/2):y=(ih/2 - (360*2)/2):enable='between(t,3,7)'" \
-c:a copy output.mp4

关键注意事项

  • 这个方案完全没有淡入淡出效果,缩放层会在指定时间点直接显示、到点直接消失,符合你的要求
  • 缩放后的画面是叠加在原视频上方的,原视频的其他区域保持原样
  • 计算crop的x和y时,一定要用中心点X - 区域宽度/2和中心点Y - 区域高度/2,这样才能保证crop的区域是以你指定的点为中心的
  • -c:a copy参数是直接复制原视频的音频,避免重新编码,能节省大量处理时间

备注:内容来源于stack exchange,提问作者Peter.k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 12:39:52