用途:把目录中按数字前缀命名的 MP4 片段,按编号顺序拼接为单个 MP4,或输出多个约 60 秒的分块,可选加入淡入淡出转场,并统一分辨率、帧率和编码。
主要能力:支持 full(整段合并)与 chunk(分块)两种模式;淡入淡出时长可配置,设为 0 可关闭;可设定目标帧率、x264 CRF(0-51,越低画质越好)和 x264 preset;设置分辨率后可自动处理混合分辨率与帧率。
使用方式:通过 with 传入参数调用,input_dir 与 output_path 必填,mode 默认 full,transition 默认 0.5 秒,fps 默认 24,crf 默认 22,preset 默认 medium。chunk 模式需将 chunk_duration 直接传给脚本,上述入口不为其做模板化,需直接以 shell 调用。依赖 ffmpeg ≥ 5.0、ffprobe 与 Python 3.8+,除标准库外无需额外 Python 包。安装可使用随附安装器(Windows 用 pwsh -ExecutionPolicy Bypass -File install.ps1,macOS 与 Debian/Ubuntu 用 bash install.sh),也可手动安装 ffmpeg。Windows 安装器默认使用 winget,可通过环境变量切换到 choco、scoop 或 skip,并会输出 ffmpeg/ffprobe 的绝对路径,必要时通过 --ffmpeg-path / --ffprobe-path 传给 merge.py。
文件名约定:脚本只选取匹配 ^\d+_.*.mp4$ 的文件,并按前导整数排序,片段须命名为 1_shot.mp4、2_shot.mp4 等。
输出与失败:标准输出打印进度与最终路径,ffmpeg 失败时以非零码退出。常见失败包括未找到 ffmpeg(需安装并加入 PATH 或直接传 --ffmpeg-path);未找到符合命名规则的 MP4 文件(需确保片段为 \d+_*.mp4);混合分辨率或帧率在设置 --resolution 时自动处理,否则保留原样不做统一。
限制:分块模式需直接调用脚本;未提供其他功能、收费、价格或平台支持等细节。