首页 > 解决方案 > ffmpeg如何用concat覆盖?

问题描述

ffmpeg \
-i main.avi\
-i mini.avi\
-filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0]concat=n=2:v=1:a=1[outv][outa]; \
[0:v:1][0:a:0][1:v:1][1:a:0]concat=n=2:v=1:a=1[outvr][outar]" \
-map "[outv]" -map "[outa]" outputMain.mp4 \
-map "[outvr]" -map "[outar]" outputMini.mp4

我可以只得到一个输出吗?2 个视频重叠。

在此处输入图像描述

标签: ffmpegconcatenationoverlay

解决方案


您想使用覆盖过滤器:

./ffmpeg -i main.avi -i mini.avi -filter_complex "[0:v][1:v]overlay=50:50[vout]" -map "[vout]" -map 0:a out.mp4

值 50:50 是从左上角的偏移量(左 50 像素;右 50 像素)。

覆盖不会改变视频分辨率。因此,只有在迷你视频的分辨率已经低于主视频的情况下,它才能正常工作。

如果您还想缩小迷你视频,请使用以下命令:

./ffmpeg -i main.avi -i mini.avi -filter_complex "[1:v]scale=w=720:h=576[vmini];[0:v][vmini]overlay=50:50[vout]" -map "[vout]" -map 0:a out.mp4

此处使用过滤器scale将迷你视频带入叠加所需的正确分辨率。


推荐阅读