您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# FFmpeg命令行怎么实现画中画
画中画(Picture-in-Picture, PiP)是视频编辑中常见的特效,通过FFmpeg命令行工具可以高效实现这一效果。本文将介绍两种典型实现方法:基础叠加法和复杂布局法。
---
## 一、基础叠加法(固定位置)
```bash
ffmpeg -i main.mp4 -i sub.mp4 -filter_complex \
"[1:v]scale=iw/4:ih/4 [pip]; \
[0:v][pip]overlay=W-w-10:H-h-10:enable='between(t,5,20)'" \
-c:a copy output.mp4
参数解析:
1. scale=iw/4:ih/4
将子视频缩小为原尺寸1/4
2. overlay=W-w-10:H-h-10
定位到主视频右下角(距右边/底边10像素)
3. enable='between(t,5,20)'
控制仅在5-20秒显示画中画
4. -c:a copy
直接复制音频流避免重编码
ffmpeg -i bg.mp4 -i fg1.mp4 -i fg2.mp4 -filter_complex \
"[1:v]scale=320:240,setpts=PTS-STARTPTS [top]; \
[2:v]scale=480:360,setpts=PTS-STARTPTS [bottom]; \
[0:v][top]overlay=x=10:y=10:shortest=1[tmp]; \
[tmp][bottom]overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10" \
-c:v libx264 -preset fast output.mp4
高级特性:
- 同时叠加多个子视频
- shortest=1
使输出时长与最短输入一致
- 使用绝对坐标(x/y)精确定位
- 动态计算位置(main_w-overlay_w
)
透明通道支持: 若子视频含alpha通道,可直接叠加透明元素:
ffmpeg -i main.mp4 -i overlay.png -filter_complex \
"[1:v]format=rgba,scale=300:-1[ov];[0:v][ov]overlay=10:10" output.mp4
动态移动效果: 通过表达式实现动画:
overlay=x='if(gte(t,2), 100+(t-2)*20, NAN)':y=50
音频混合:
-filter_complex "amix=inputs=2:duration=shortest"
trim
/setpts
)减少处理量-preset ultrafast
可加速测试过程ffplay
预览效果:
ffplay -f lavfi "movie=main.mp4[m];movie=sub.mp4[s];[m][s]overlay"
通过灵活组合FFmpeg的滤镜链,可以实现从简单到专业的各种画中画效果。 “`
注:实际使用时需根据视频分辨率调整缩放比例和坐标值,建议先通过ffprobe
获取视频尺寸信息。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。