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

如何使用FFmpeg将多个5秒短视频每3个拼接为一个15秒视频

FFmpeg批量每3个5秒短视频拼接为15秒视频自动化脚本

前置要求

  • 所有待拼接的5秒短视频存放在同一个文件夹内,且视频的编码、分辨率、帧率、音频参数完全一致,避免拼接后出现花屏、音画不同步等异常
  • 已正确安装FFmpeg并将其添加到系统环境变量,可直接在命令行/终端调用ffmpeg命令

各系统实现脚本

Linux/macOS (Bash脚本)

  1. 将以下代码保存为concat_videos.sh,放在待处理视频所在的文件夹中
  2. 给脚本添加执行权限:chmod +x concat_videos.sh
  3. 直接运行脚本即可自动完成分组拼接
#!/bin/bash
# 配置项:可根据需要修改
INPUT_SUFFIX="mp4"  # 输入视频后缀
GROUP_SIZE=3        # 每组拼接的视频数量
OUTPUT_PREFIX="合成视频_"  # 输出文件前缀

# 按自然排序获取所有输入视频,存入数组
mapfile -t videos < <(ls -v *.${INPUT_SUFFIX})
total=${#videos[@]}

# 分组处理
for ((i=0; i<total; i+=GROUP_SIZE)); do
    group=("${videos[@]:i:GROUP_SIZE}")
    group_num=$((i/GROUP_SIZE + 1))
    list_file="temp_list_${group_num}.txt"
    
    # 生成FFmpeg concat格式的临时列表
    > "$list_file"
    for vid in "${group[@]}"; do
        echo "file '$PWD/$vid'" >> "$list_file"
    done
    
    # 执行拼接,直接复制编码无质量损失、处理速度快
    ffmpeg -f concat -safe 0 -i "$list_file" -c copy "${OUTPUT_PREFIX}${group_num}.mp4" -y
    # 删除临时列表文件
    rm -f "$list_file"
done

如果你的视频格式不是mp4,修改INPUT_SUFFIX的取值即可;如果需要调整每组拼接的数量,修改GROUP_SIZE即可。

Windows (批处理脚本)

  1. 将以下代码保存为concat_videos.bat,放在待处理视频所在的文件夹中
  2. 双击脚本即可自动完成分组拼接
@echo off
setlocal enabledelayedexpansion
:: 配置项:可根据需要修改
set INPUT_SUFFIX=mp4
set GROUP_SIZE=3
set OUTPUT_PREFIX=合成视频_

set /a count=0
set /a group_num=1
set list_file=temp_list_!group_num!.txt

:: 遍历所有视频文件,分组处理
for /f "delims=" %%v in ('dir /b /on *.%INPUT_SUFFIX%') do (
    if !count! equ 0 (
        del /q !list_file! 2>nul
    )
    echo file '%%~fv' >> !list_file!
    set /a count+=1
    
    if !count! equ %GROUP_SIZE% (
        ffmpeg -f concat -safe 0 -i !list_file! -c copy %OUTPUT_PREFIX%!group_num!.mp4 -y
        del /q !list_file!
        set /a count=0
        set /a group_num+=1
        set list_file=temp_list_!group_num!.txt
    )
)

:: 处理不足3个的剩余视频(如果不需要可以删除下面这段)
if %count% gtr 0 (
    ffmpeg -f concat -safe 0 -i !list_file! -c copy %OUTPUT_PREFIX%!group_num!.mp4 -y
    del /q !list_file!
)
endlocal

脚本默认会处理不足3个的剩余视频,如果你不需要剩余不足3个的视频拼接,删除批处理最后面标注的对应代码段即可。

内容的提问来源于stack exchange,提问作者Данила Фадеичев

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 21:24:02