ffmpeg滤镜使用

背景:现在有2个mp4文件,一个文件分辨率是854x480,另一个是320x240,想要通过ffmpeg实现把多路视频流进行拼接,实现不同效果

overlay滤镜拼接多路视频流实现画中画效果

ffmpeg -i input_854x480.mp4 -i input_320x240.mp4 -filter_complex "[1:v]scale=240:-1,setsar=1[small]; [0:v][small]overlay=W-w-10:H-h-10:shortest=1" -c:v libx264 -preset fast -c:a copy output_overlay.mp4

overlay 滤镜将 ‌320x240‌ 的小视频作为画中画展示在右下角,如下图所示:

下面针对各个参数做解释:

  1. 缩放小视频(320x240 → 240x135)
bash 复制代码
[1:v]scale=240:-1,setsar=1[small]
  • scale=240:-1‌:将小视频宽度缩放到 240px,高度按比例自适应(原始宽高比 320:240=4:3 → 缩放后 240x135,保持 16:9)
  • setsar=1‌:强制设置像素宽高比为 1:1(防止播放时变形)
  1. 叠加到主视频右下角
bash 复制代码
[0:v][small]overlay=W-w-10:H-h-10:shortest=1
  • W-w-10‌:X 坐标 = 主视频宽度 (854) - 小视频宽度 (240) - 右边距 (10px) → 854-240-10=604
  • H-h-10‌:Y 坐标 = 主视频高度 (480) - 小视频高度 (135) - 下边距 (10px) → 480-135-10=335
  • ‌shortest=1‌:以最短的输入流时长为准(若两路视频时长不同)
  1. 其他参数
  • c:a copy‌:直接复制主视频的音频流(若需混合两路音频,改用 amix 滤镜)
  • ‌-preset fast‌:平衡编码速度与压缩率
相关推荐
Yeauty1 天前
从0到1:Rust 如何用 FFmpeg 和 OpenGL 打造硬核视频特效
rust·ffmpeg·音视频
witton1 天前
MinGW下编译ffmpeg源码时生成compile_commands.json
ffmpeg·json·makefile·mingw·调试·compile_command·remake
用户96715113916721 天前
从0到1:Rust 如何用 FFmpeg 和 OpenGL 打造硬核视频特效
rust·ffmpeg
喵手2 天前
Java实现视频格式转换的完整指南:从FFmpeg到纯Java方案!
java·开发语言·ffmpeg
钰爱&2 天前
【Qt】ffmpeg编码—存储(H264)
c++·qt·ffmpeg
yunteng5212 天前
音视频(二)ffmpeg编译及推流
ffmpeg·音视频·h264·媒体推流
DogDaoDao2 天前
从零开始:Windows 系统中 PowerShell 配置 FFmpeg 的详细步骤
windows·ffmpeg·音视频·ffplay·powershell·视频直播·ffprobe
m晴朗3 天前
ffmpeg(1)-图片相关知识
ffmpeg·yuv·rgb·像素