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

分屏输入视频转循环单屏视频的实现方法咨询

分屏输入视频转循环单屏视频的实现方法咨询

嘿,这个需求用FFmpeg就能轻松搞定!我来给你一步步拆解怎么做,不管你是双分屏还是多分屏,自定义每屏显示时长都没问题:

核心思路

先把分屏视频的每个区域单独截取出来,再按你想要的时长(1秒、2秒都可以)交替拼接这些区域的画面,循环覆盖原视频的全部时长。

具体操作(以双分屏为例,3840x2160左右分屏)

假设你要每1秒切换一次左右屏,直接用下面的FFmpeg命令就行,不用生成中间文件:

ffmpeg -i input.mp4 -filter_complex "
split=2[v0][v1];
# 截取左半屏(宽1920,高2160,起始坐标x=0,y=0),只保留偶数秒的画面
[v0]crop=1920:2160:0:0,select='mod(n,60)<30',setpts=N/FRAME_RATE/TB[left];
# 截取右半屏(起始坐标x=1920,y=0),只保留奇数秒的画面
[v1]crop=1920:2160:1920:0,select='mod(n,60)>=30',setpts=N/FRAME_RATE/TB[right];
# 拼接左右屏的片段,生成最终视频流
[left][right]concat=n=2:v=1:a=0[v];
# 同步音频时间戳,避免音画错位
[a]asetpts=N/SR/TB[aout]
" -map "[v]" -map "[aout]" -c:v libx264 -crf 23 -preset medium output.mp4

参数自定义调整指南

  • 切换时长修改:如果想每2秒切换一次,把mod(n,60)里的60改成120(假设视频帧率是30fps,2秒对应60帧,切换周期就是120帧),同时把<30改成<60,>=30改成>=60即可。如果你的视频帧率不是30,替换成帧率×2×单屏时长和帧率×单屏时长就好。
  • 多分屏适配:如果是4分屏(2×2布局),先把split=2改成split=4,然后给每个流加对应的crop命令(比如左上屏crop=1920:1080:0:0,右上屏crop=1920:1080:1920:0等),再给每个流设置对应的select过滤条件,最后把concat=n=2改成concat=n=4。
  • 上下分屏适配:如果是上下布局的分屏,调整crop参数即可——上半屏是crop=3840:1080:0:0,下半屏是crop=3840:1080:0:1080。
  • 视频质量控制:-crf 23是默认质量,数值越小质量越高(18-28是常用范围);-preset medium是编码速度,可选fast(更快)或slow(画质更优)。

小提示

用帧计数(mod(n,xxx))比时间(mod(t,xxx))更精准,能避免浮点运算导致的切换时机误差,优先推荐这种写法。

备注:内容来源于stack exchange,提问作者PirateApp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 10:03:08