SuperAPI AI 工具集

video-concat

通用与其它

查看项目

更新于 10-15 07:50

技能介绍

video-concat 是一个基于 ffmpeg 的视频合并技能,来自 maxgent-ai/maxgent-plugin,用于把多个视频文件合并为一个视频。

用途 当用户希望合并视频、拼接视频、把多个视频合在一起、连接视频时使用该技能。它通过 ffmpeg 完成拼接,并在流程中要求确认关键参数,避免直接假设合并条件。

主要流程与能力 获取并分析输入文件:如果用户未提供输入文件路径,会要求用户提供待合并的视频列表。对每个文件,使用 ffprobe 获取时长、大小、编码、分辨率、帧率等信息,并向用户展示文件名、时长、分辨率、编码,同时检查所有文件格式是否兼容(相同编码、分辨率、帧率)。

兼容性检查 分辨率兼容性:必须检查所有输入文件的分辨率。若分辨率一致,可使用 concat demuxer;若不一致,必须使用 AskUserQuestion 询问用户输出使用哪种分辨率,例如使用某个文件的分辨率、最高分辨率、最低分辨率或自定义分辨率。分辨率不同时必须使用 concat filter 方法(而非 concat demuxer),并通过 scale 与 pad 将视频缩放到选定分辨率,保持宽高比并在需要时补黑边。

音频编码兼容性:必须检查所有输入文件的音频编码(如 aac、eac3、ac3、mp3、opus)。若一致,记录编码供后续使用;若不一致,必须询问用户输出使用哪种音频编码,例如保留某个文件的编码、重编码为 AAC(兼容性广)或 EAC3(Dolby Digital Plus)等。编码不同时必须重编码音频。

确认拼接顺序(关键):必须让用户确认或指定拼接顺序。会以编号列表展示所有文件及详情,询问用户确认顺序,选项包括按当前顺序拼接、自定义顺序;若只有两个文件,还会提供反转顺序。技能明确要求不应根据文件名或用户提供的顺序自行假设,必须显式确认后再继续。

询问合并配置:在执行任何 ffmpeg 命令前,必须通过 AskUserQuestion 收集用户偏好,包括合并方式(concat demuxer、concat filter 或根据分析自动决定)、输出质量(匹配源质量、轻度压缩 CRF 23、中度压缩 CRF 28 或自定义)、音频处理(保留所有音轨、仅保留第一条音轨、完全移除音频、重编码为 AAC 128k)、转场效果(无转场、1 秒交叉淡化、淡入淡出到黑)、输出格式(与输入相同、MP4、MKV、MOV)以及输出路径(默认建议 merged_output.ext)。

构建并执行 ffmpeg 命令 Method 1:concat demuxer(同格式文件,最快)。创建包含输入文件列表的文本文件,执行 ffmpeg -f concat -safe 0 -i /tmp/concat_list.txt -c copy "OUTPUT.mp4"。 Method 2:concat filter(不同格式文件)。对多个输入使用 filter_complex 的 concat,例如两个文件为 "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[outv][outa]",映射输出并重编码,如 -c:v libx264 -crf 23 -c:a aac -b:a 128k。 Method 3:带交叉淡化转场。使用 xfade 与 acrossfade,例如 "[0:v][1:v]xfade=transition=fade:duration=1:offset=DURATION1-1[outv]; [0:a][1:a]acrossfade=d=1[outa]"。文档列出了可用的 xfade 转场,包括 fade、fadeblack、fadewhite、distance、wipeleft、wiperight、wipeup、wipedown、slideleft、slideright、slideup、slidedown、smoothleft、smoothright、circlecrop、rectcrop、circleclose、circleopen、horzclose、horzopen、vertclose、vertopen、diagbl、diagbr、diagtl、diagtr、hlslice、hrslice、vuslice、vdslice、dissolve、pixelize、radial、hblur、wipetl、wipetr、wipebl、wipebr、squeezeh、squeezev、zoomin。

音频选项包括:保留所有音频 -c:a copy(concat demuxer 默认)、移除音频 -an、重编码音频 -c:a aac -b:a 128k。

执行与报告:在运行前向用户展示完整 ffmpeg 命令,执行并输出进度,报告成功或失败,显示输出文件路径与大小。

验证输出:合并后使用 ffprobe 检查输出文件的时长与大小,报告总时长(应等于输入时长之和,若有转场则扣除转场时长)、文件大小以及任何警告或问题。

适用场景 适用于需要把多个视频片段连接成单个视频文件的任务,例如合并分段录制的视频、将分散素材拼接为完整视频,以及在编码或分辨率不一致时进行统一处理后再拼接。

限制与注意事项 该技能依赖 ffmpeg 与 ffprobe 环境,文档未提供安装命令,环境要求暂未提供。合并过程强制要求用户确认分辨率、音频编码、拼接顺序和合并配置;文档未提供支持的文件数量上限、性能指标或输出效果保证,这些信息暂未提供。