前言

使用FFmpeg能够很方便的合并同分辨率的视频。很多时候我们可能需要批量化合并视频,此时可以通过编写Bash脚本来实现。

实现

批量合并视频

合并三个文件夹中的视频结果:

result_path1=task1
result_path2=task2
result_path3=task3
concat_path=concat-videosif [ ! -d "./$concat_path" ]; thenmkdir ./$concat_path
fifor i in {0..20}
doecho "process: $i"ffmpeg -i ./$result_path1/$i/*.mp4 -i ./$result_path2/$i/*.mp4  -i ./$result_path3/$i/*.mp4 -lavfi hstack=3 -y ./$concat_path/concat-video$i.mp4
done

注:hstack为水平合并,vstack为竖直合并。

根据宽高关系合并视频

有时视频是宽大于高,而有时是高大于宽。此时需要根据宽高关系自适应选择hstack或者vstack。

result_path1=task1
result_path2=task2
result_path3=task3concat_path=concat-videosif [ ! -d "./$concat_path" ]; thenmkdir ./$concat_path
fifunction getWidth(){width=( $(ffprobe -v error -show_entries stream=width -of csv=p=0  $1))echo $width
}function getHeight(){height=( $(ffprobe -v error -show_entries stream=height -of csv=p=0  $1))echo $height
}for i in {0..20}
doecho "process: $i"widthInfo=$(getWidth ./$result_path1/$i/*.mp4)heightInfo=$(getHeight ./$result_path1/$i/*.mp4)if [ $widthInfo -gt $heightInfo ]then#echo $widthInfo ">" $heightInfoffmpeg -i ./$result_path1/$i/*.mp4 -i ./$result_path2/$i/*.mp4 -i ./$result_path3/$i/*.mp4 -qscale 0 -lavfi vstack=3 -y ./$concat_path/concat-$i.mp4else#echo $widthInfo "<" $heightInfoffmpeg -i ./$result_path1/$i/*.mp4 -i ./$result_path2/$i/*.mp4 -i ./$result_path3/$i/*.mp4 -qscale 0 -lavfi hstack=3 -y ./$concat_path/concat-$i.mp4fi
done

版权说明

本文为原创文章,独家发布在blog.csdn.net/TracelessLe。未经个人允许不得转载。如需帮助请email至tracelessle@163.com。

参考资料

[1] 【持续更新】FFmpeg常用命令小结_TracelessLe的专栏-CSDN博客_ffmpeg更新命令
[2] Bash语法中的For Loop_TracelessLe的专栏-CSDN博客_bash for loop
[3] Bash语法中的if else_TracelessLe的专栏-CSDN博客

编写Bash脚本实现使用FFmpeg批量合并视频相关推荐

  1. 编写Bash脚本获取文件夹下文件名和扩展名

    前言 很多时候我们可能需要获取文件夹下的文件名和扩展名用于任务处理,此时可以通过编写Bash脚本来实现. 实现 result_path1=task1 result_path2=task2 concat ...

  2. 通过shell/bash脚本使用ffmpeg批量去除视频固定片头和片尾(Cygwin环境)

    通过shell/bash脚本使用ffmpeg批量去除视频固定片头和片尾(Cygwin环境) 任务需求: 基本情况: 技能需求: 操作流程概括: 运行通过的shell脚本: 小结 任务需求: 对一批视频 ...

  3. 命令行批量合并视频脚本

    批量合并视频头部 需要ffmpeg, 目前直接安装格式工厂, 使用格式工厂模块下的ffmpge.exe, 避免自己去下载源码和编译 ffmpeg合并视频的几种方法 ffmpeg的合并方式有三种, 参考 ...

  4. bashsupport插件_如何用 bash-support 插件将 Vim 编辑器打造成编写 Bash 脚本的 IDE

    IDE(集成开发环境)就是这样一个软件,它为了最大化程序员生产效率,提供了很多编程所需的设施和组件. IDE 将所有开发工作集中到一个程序中,使得程序员可以编写.修改.编译.部署以及调试程序. 在这篇 ...

  5. C++调用ffmpeg批量合并bilibili缓存视频

    文章目录 前言 一.先看效果 二.开始写代码 1.遍历文件 2.获取视频标题和视频名称 3.生成视频 4.主函数 总结 前言 手机bilibili缓存了很多视频,想导入电脑看,但发现缓存的视频被分割成 ...

  6. 【ffmpeg】——批量合并视频

    最近在做一个项目,关于视频下载的,需要同时对多个视频进行处理,这时我们用到了一个工 具--ffmpeg,工具具体的安装步骤大家可以度娘,在这就不一一介绍啦. 下面进入正题,该如何使用ffmpeg工具进 ...

  7. 初学者编写bash脚本教程

    初学者编写bash脚本教程 bash shell script 定义 bash bash是命令语言解释器.广泛用于各种gun/unix系统上的默认命令解释器.全程叫做"Bourne-Agai ...

  8. 使用 ffmpeg 快速合并视频文件

    1. 下载安装 ffmpeg 在官网上下载 ffmpeg 链接: Download FFmpeg windos 下下载 .ZIP 格式的 ffmpeg 直接解压即可,无需安装,之后配置好环境变量就好了 ...

  9. FFmpeg批量转换视频格式

    FFmpeg 批量转换视频格式 1.新建一个.bat文件(如新建"视频转换.bat"),将下列代码复制进去后保存. 2.将该文件放在含有视频的文件夹类,双击运行即可.运行完成后视频 ...

最新文章

  1. PicGo 配置Gitee 图床
  2. Grafana 7.0 发布:改进的界面、新的插件平台和可视化等
  3. 算法 有两个相同大小数组均已按升序排列好 编程计算这两个数组的中位数 C
  4. Domain Model
  5. Matlab之while循环语句
  6. [CTO札记]Yew敏捷软件项目管理最佳实践
  7. 文字输入限制_从拼音输入法的兴起看汉字文化圈的衰落
  8. Anaconda 镜像源操作(查看配置删除)
  9. djangosave保存数据太慢_PaddlePaddle从入门到炼丹八——模型的保存与使用
  10. 数据结构c语言pdf2007,数据结构(C语言)严蔚敏 吴伟明 编著 07.pdf
  11. 工业自动化控制软件SCADA数据模型的使用方法实例
  12. 【kaggle比赛记录】SHOPPE商品分类多模态分析
  13. 计算机无法检测电池损耗怎么办,笔记本电脑如何检测电池损耗程度-鲁大师检测电池损耗的方法 - 河东软件园...
  14. 交叉谱分析——Python
  15. 视频教程-JavaScript打飞机小游戏视频教程-JavaScript
  16. npm install 很慢、卡死怎么解决
  17. 锐龙r7 6800u和i5 12500h选哪个好 r76800u和i512500h对比
  18. 如何轻松搞定各种图形化展现
  19. 配置AD域环境、OU、GPO
  20. Best Time to Buy and Sell Stock III

热门文章

  1. 多元一次不定方程的强力算法---同余筛数法
  2. Android真机测试使用百度地图定位到非洲附近的的问题
  3. CCNA认证简介之资料篇
  4. 霍尔传感器-接近开关-门磁的使用
  5. 【报错记录】RuntimeError: don‘t know how to restore data location of torch.FloatStorage (tagged with CPU)
  6. 微信小程序——对象中添加元素
  7. 王牌经理人特训课程——偶也是转载来学习的
  8. 内涵段子所有段子Spider
  9. al00华为手机_华为al00手机报价图片_华为al00手机
  10. iOS动效-利用CATransform3D实现翻页动画效果