FFmpeg实现文件夹多视频合并

使用FFmpeg合并文件夹中的多个视频文件,可以通过多种方式来实现,具体取决于你希望如何合并这些视频文件。下面介绍两种常见的方法:

  1. 按顺序拼接多个视频文件

    • 适用于希望将多个视频文件按顺序合并成一个视频文件的情况。
  2. 将多个视频文件布局在一个视频中

    • 适用于希望将多个视频文件同时显示在一个视频画面中的情况。

方法一:按顺序拼接多个视频文件

步骤:
  1. 创建文本文件

    • 创建一个文本文件 filelist.txt,列出所有要合并的视频文件。

    • 格式如下:

      复制代码
      file 'path/to/video1.mp4'
      file 'path/to/video2.mp4'
      file 'path/to/video3.mp4'
  2. 使用FFmpeg进行合并

    • 使用以下命令进行合并:

      bash 复制代码
      ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4
示例:

假设有三个视频文件 video1.mp4video2.mp4video3.mp4,它们存放在 /path/to/videos 目录下:

  1. 创建 filelist.txt

    复制代码
    file '/path/to/videos/video1.mp4'
    file '/path/to/videos/video2.mp4'
    file '/path/to/videos/video3.mp4'
  2. 运行FFmpeg命令:

    bash 复制代码
    ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4

方法二:将多个视频文件布局在一个视频中

步骤:
  1. 创建复杂滤镜

    • 使用 filter_complex 指定每个视频的布局位置。
  2. 使用FFmpeg进行合并

    • 例如,将两个视频水平拼接:

      bash 复制代码
      ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v][1:v]hstack=inputs=2[v];[0:a][1:a]amerge=inputs=2[a]" -map "[v]" -map "[a]" -ac 2 output.mp4
示例:

假设有两个视频文件 input1.mp4input2.mp4,它们存放在 /path/to/videos 目录下,并希望将它们水平拼接:

  1. 运行FFmpeg命令:

    bash 复制代码
    ffmpeg -i /path/to/videos/input1.mp4 -i /path/to/videos/input2.mp4 -filter_complex "[0:v][1:v]hstack=inputs=2[v];[0:a][1:a]amerge=inputs=2[a]" -map "[v]" -map "[a]" -ac 2 output.mp4
更多示例:
  • 垂直拼接多个视频文件

    bash 复制代码
    ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v][1:v]vstack=inputs=2[v];[0:a][1:a]amerge=inputs=2[a]" -map "[v]" -map "[a]" -ac 2 output.mp4
  • 创建网格布局(例如2x2网格):

    bash 复制代码
    ffmpeg -i input1.mp4 -i input2.mp4 -i input3.mp4 -i input4.mp4 -filter_complex "\
    [0:v][1:v]hstack=inputs=2[top]; \
    [2:v][3:v]hstack=inputs=2[bottom]; \
    [top][bottom]vstack=inputs=2[v]; \
    [0:a][1:a][2:a][3:a]amerge=inputs=4[a]" \
    -map "[v]" -map "[a]" -ac 2 output.mp4

自动生成filelist.txt脚本(针对方法一)

如果你有很多视频文件在一个文件夹中,可以使用一个简单的Bash脚本来生成 filelist.txt

bash 复制代码
#!/bin/bash

# Change to the directory containing your video files
cd /path/to/videos

# Generate filelist.txt
ls *.mp4 | while read filename; do
    echo "file '$PWD/$filename'" >> filelist.txt
done

然后运行上述脚本生成 filelist.txt 文件,接着运行FFmpeg合并命令:

bash 复制代码
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4

通过这些步骤,你可以轻松地使用FFmpeg将多个视频文件合并成一个视频文件。根据你的具体需求,选择合适的方法和配置。

相关推荐
小猴子爱上树1 小时前
一站式解决图片视频翻译难题的高效AI工具
人工智能·python·音视频
EasyGBS4 小时前
ONVIF设备接入国标GB28181视频平台EasyGBS:不用国标也能一键拉流!
服务器·php·音视频
Legendary_0084 小时前
LDR6500 设计指南:Type-C 音频快充二合一配件 PD 取电与插拔时序控制方案
c语言·开发语言·音视频
音视频牛哥6 小时前
SmartMediaKit 推拉流MP4录像实践:实时传输与本地留存一体化
音视频·rtmp推流录像·rtmp播放端录像·rtsp播放端录像·rtsp流录制·rtmp流录制·rtsp服务器录像
石臻臻的杂货铺8 小时前
做 AI 视频,先让 Blender 把镜头演一遍
人工智能·音视频·blender
ALINX技术博客8 小时前
【黑金云课堂】FPGA技术教程Vitis开发:SD卡WAV文件读取音频播放实验
fpga开发·音视频
沐禾安信1 天前
AVI 视频打不开?2026 四款转 MP4 工具封神
音视频·电脑录屏
兵叔物联1 天前
基于FFmpeg的短视频自动剪辑工具
ffmpeg·音视频
AORUO奥偌1 天前
从“拼凑”到“集成”:音视频系统如何重塑弱电智能化建设逻辑
音视频·公共广播系统·音视频系统·多媒体会议与ip广播系统·多媒体会议系统
禹亮科技1 天前
大型国企会议室音视频集成实战:3间120㎡空间Poly G7500+LED大屏+讯飞多语言会议系统落地方案
音视频·视频会议系统集成·上海禹亮科技·讯飞听见多语言会议系统·poly g7500