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

如何用FFmpeg将两个MP4视频以对角线分割方式并排合并?

用FFmpeg实现对角线分割的视频对比效果

完全可以实现,FFmpeg的滤镜系统能轻松搞定这种自定义分割的视频合成需求,核心思路是通过blend滤镜结合表达式生成对角线遮罩,让两个视频分别显示在对角线两侧。

基础命令(适用于同分辨率视频)

ffmpeg -i video1.mp4 -i video2.mp4 \
-filter_complex "
[0:v]format=rgba,scale=iw:ih[v0];
[1:v]format=rgba,scale=iw:ih[v1];
[v0][v1]blend=all_expr='if(X>=Y*(W/H),A,B)'
" -c:a copy output.mp4

命令拆解

  • format=rgba:将视频转换为带Alpha通道的格式,为后续像素级混合做准备
  • scale=iw:ih:确保两个视频尺寸一致(如果原始视频分辨率不同,可替换为固定尺寸,比如scale=1920:1080)
  • blend滤镜的表达式是核心:if(X>=Y*(W/H),A,B)
    • X代表当前像素的横坐标,Y代表纵坐标
    • Y*(W/H)是左下到右上对角线的像素坐标计算式,用来判断当前像素是否在对角线右侧
    • 满足条件时显示第一个输入视频(A),否则显示第二个视频(B)

适配不同分辨率的视频

如果两个视频尺寸不一样,先统一分辨率并保持原比例,可修改滤镜链:

ffmpeg -i video1.mp4 -i video2.mp4 \
-filter_complex "
[0:v]format=rgba,scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2[v0];
[1:v]format=rgba,scale=1920:1080:force_original_aspect_ratio=decrease,pad=1920:1080:(ow-iw)/2:(oh-ih)/2[v1];
[v0][v1]blend=all_expr='if(X>=Y*(W/H),A,B)'
" -c:a copy output.mp4

这里用scale按比例缩小视频,再用pad填充黑边到目标尺寸,保证两个视频显示区域一致。

内容的提问来源于stack exchange,提问作者nickponline

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 05:23:18