当前位置: 首页 > news >正文

FFmpeg实现文件夹多视频合并

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

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

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

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

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

步骤:
  1. 创建文本文件
    • 创建一个文本文件 filelist.txt,列出所有要合并的视频文件。
    • 格式如下:
      file 'path/to/video1.mp4'
      file 'path/to/video2.mp4'
      file 'path/to/video3.mp4'
      
  2. 使用FFmpeg进行合并
    • 使用以下命令进行合并:
      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命令:
    ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4
    

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

步骤:
  1. 创建复杂滤镜

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

    • 例如,将两个视频水平拼接:
      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命令:
    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
    
更多示例:
  • 垂直拼接多个视频文件

    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网格):

    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

#!/bin/bash# Change to the directory containing your video files
cd /path/to/videos# Generate filelist.txt
ls *.mp4 | while read filename; doecho "file '$PWD/$filename'" >> filelist.txt
done

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

ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 使用Python创建多功能文件管理器
  • AcWing食物链
  • Lua 脚本编程基础
  • 搭建nexus上传jar包,并结合jenkins运行项目
  • OpenCV||超细节的基本操作
  • Redis学习笔记——第19章 事务
  • 【算法】递归实现二分查找(优化)以及非递归实现二分查找
  • RMAN-06618不同版本之间RMAN无法连接
  • 『C++实战项目 负载均衡式在线OJ』二、编译模块编写(持续更新)
  • 【前端 22】使用Nginx部署前端项目
  • 手持式气象站:科技赋能精准气象观测
  • 长短期记忆网络LSTM
  • 自制安卓车机软件(含APP)
  • 1、爬⾍概述
  • 【2024】Datawhale AI夏令营 Task4笔记——vllm加速方式修改及llm推理参数调整上分
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • Akka系列(七):Actor持久化之Akka persistence
  • C++11: atomic 头文件
  • docker python 配置
  • fetch 从初识到应用
  • Js基础——数据类型之Null和Undefined
  • Laravel 中的一个后期静态绑定
  • mysql_config not found
  • node和express搭建代理服务器(源码)
  • PV统计优化设计
  • ReactNativeweexDeviceOne对比
  • 基于阿里云移动推送的移动应用推送模式最佳实践
  • 蓝海存储开关机注意事项总结
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 微信公众号开发小记——5.python微信红包
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ‌U盘闪一下就没了?‌如何有效恢复数据
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • $.ajax中的eval及dataType
  • $emit传递多个参数_PPC和MIPS指令集下二进制代码中函数参数个数的识别方法
  • (02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (笔记)M1使用hombrew安装qemu
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (算法)区间调度问题
  • .cfg\.dat\.mak(持续补充)
  • .htaccess配置常用技巧
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .net/c# memcached 获取所有缓存键(keys)
  • .net6 当连接用户的shell断掉后,dotnet会自动关闭,达不到长期运行的效果。.NET 进程守护
  • .NET处理HTTP请求
  • .NET是什么
  • /etc/sudoer文件配置简析
  • /tmp目录下出现system-private文件夹解决方法
  • @Builder注释导致@RequestBody的前端json反序列化失败,HTTP400
  • [ 常用工具篇 ] POC-bomber 漏洞检测工具安装及使用详解
  • [10] CUDA程序性能的提升 与 流
  • [15] 使用Opencv_CUDA 模块实现基本计算机视觉程序
  • [20180224]expdp query 写法问题.txt