ffmpeg - 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 个视频重叠。
解决方案
您想使用覆盖过滤器:
./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
将迷你视频带入叠加所需的正确分辨率。
推荐阅读
- html - 在没有 p 元素的情况下在 HTML 中插入分页符以避免 PDF 中出现空白页
- sql - Google BigQuery SQL 查找数组中 ID 的所有记录
- firebase - 如何在没有组织的情况下创建 Firebase 项目
- javascript - 如何确定是否正在使用 TURN 服务器(WebRTC)?
- excel - 将excel值复制到新工作表
- c++ - 在 C++ 中尝试 jaeger opentracing 时,不使用“-L /usr/local/lib”进行编译会产生“无法连接到套接字”错误
- mysql - 当表单在 node.js 中设置为 enctype="multipart/form-data" 时,我们如何在 MySQL 中发送数据?
- java - 如何在 log4j2 插件中通过 websocket 发送消息?
- android - 使用 Cloud Firestore 中的数据在 Android 应用中初始化 SwipeStack
- firebase - Firebase 消息传递获取云函数名称