FFMPEG 合并视频文件(无损)

前言

最近在做视频转码相关业务,但是片源商给了一些DVD的零散视频片段,需要自己去合并片段并进行业务转码,本篇文章主要记录视频合并的过程及常见的合并方式。

环境

  • FFMPEG BUILDS 4.4.1

    FFmpeg Builds

  • GeForce GTX 1060(NVIDIA)

    显卡支持列表

  • windows 10

  • OVB格式视频文件

    VTS_01_1.VOB
    VTS_01_2.VOB
    VTS_01_3.VOB
    VTS_01_4.VOB
    VTS_01_5.VOB

视频合并方式

concat 分离器
新建 merge.txt
file 'VTS_01_1.VOB'
file 'VTS_01_2.VOB'
file 'VTS_01_3.VOB'
file 'VTS_01_4.VOB'
file 'VTS_01_5.VOB'
合并视频文件
ffmpeg -f concat -safe 0 -i merge.txt -c copy vts.mp4

PS:如果使用的是相对路径可以不加 -safe 0

文件列表生成技巧

如果视频文件过多,merge.txt 复制很繁琐,所以可以使用命令来快速生成文件列表文件。

windows

(for %i in (*.VOB) do @echo file '%i') > merge.txt

PS:*.VOB 代表视频文件后缀。

linux

# bash
for f in *.wav; do echo "file '$f'" >> merge.txt; done
# printf
printf "file '%s'\n" *.wav > merge.txt
concat 协议
缺点

这种方式使用范围比较小,只适合MPEG等视频格式;

合并视频
ffmpeg -i "concat:input1.ts|input2.ts|input3.ts" -c copy merge.ts
拓展

如果是其他格式文件,则可以先转码在合并,例如

ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate1.ts
ffmpeg -i input2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts intermediate2.ts
ffmpeg -i "concat:intermediate1.ts|intermediate2.ts" -c copy -bsf:a aac_adtstoasc -movflags +faststart output.mp4

PS:-movflags +faststart 使用这两个属性生成的文件可以边下边看。

concat 过滤器(有损)
说明

过滤器适用于同步视频和音频流的段。所有段都必须具有相同数量的每种类型的流,并且也将是输出时的流数。

合并视频
ffmpeg -i input1.mp4 -i input2.webm -i input3.mov \
-filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0]concat=n=3:v=1:a=1[outv][outa]" \
-map "[outv]" -map "[outa]" output.mkv

PS:输入流有三个,分别是input1.mp4input2.webminput3.mov ,然后告诉ffmpeg取出视频中的视频流及音频流,使用concat过滤器,告知它有三个视频流,他们都分别有一个视频流及一个音频流,连接并产生新的视频流[outv]及音频流[outa],然后映射新的视频流及音频流到新的文件 output.mkv

总结

以上就是使用FFMPEG合并视频的方式及过程,各种方式各有利弊,推荐 concat分离器 > concat协议 > concat过滤器 ,不能说哪种方式最好,只能根据实际情况来选择,如果大家有更好的方式或者建议,欢迎讨论。

FFMPEG 合并视频文件(无损)相关推荐

  1. ffmpeg合并视频文件

    ffmpeg合并视频文件 创建列表文件filelist.txt,将需要合并的文件按顺序加入,内容如下所示: ffconcat version 1.0 file path/test_1.mp4 file ...

  2. 使用ffmpeg合并视频文件的三种方法

    ffmpeg合并视频的方法有三种.国内大多数仅介绍了其中之一.于是觉得有必要翻译一下.其实在ffmpeg的 FAQ文档中有比较详细的说明. 使用concat协议进行视频文件的合并 这种方式的适用场景是 ...

  3. 通过ffmpeg合并视频文件

    1. 生成将要合并的视频文件列表. 通过以下脚本生成将要合并的视频文件列表mylist.txt: (for %i in (*.mp4) do @echo file '%i') > mylist. ...

  4. linux ffmpeg 合并视频文件,使用ffmpeg合并视频

    需求:将十几个MP4视频文件合并为1个视频. 思路: 先将MP4文件转化为同样编码形式的ts流(ts流支持concate) 第二步,连接(concate)ts流 最后,把连接好的ts流转化为MP4. ...

  5. FFmpeg 合并视频文件没声音,不同步原因

    查了不少帖子也没搞明白,可能懂的人不会遇到吧. 1 没声音是因为我几个视频文件中,有的没音轨,就是用文字生成了个视频,需要先给它加个dummy的音轨才行. 2 视频不同步是因为各个视频格式不一样,参数 ...

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

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

  7. java利用ffmpeg追加合并视频文件

    java利用ffmpeg追加合并视频文件 首先要用到ffmpeg,可以根据操作系统自行下载 每个视频格式要一样,分辨率要一样 多个视频地址以list存放,直接上代码 /*** 合并视频文件* @par ...

  8. ffmpeg 合并转换文件_使用FFmpeg转换媒体文件的快速指南

    ffmpeg 合并转换文件 有许多开源工具可用于编辑,调整和将多媒体准确地转换为您所需的内容. 诸如Audacity或Handbrake之类的工具非常出色,但有时您只想快速将文件从一种格式更改为另一种 ...

  9. ffmpeg音视频文件音视频流抽取,初步尝试人声分离

    文章目录 ffmpeg抽取音视频文件中的音频流 音频流类型 AAC与m4a的区别 AAC与mp3的区别 用ffmpeg查看视频的信息 用ffmpeg抽取AAC音频流 从AAC文件中获取音轨 音轨是什么 ...

最新文章

  1. linux下wxr的权限,Day16-Linux权限知识和应用实践讲解
  2. 解决sublime3 中文乱码问题
  3. 东北农业大学考研计算机大纲,东北农业大学(专业学位)计算机技术研究生考试科目和考研参考书目...
  4. console.log打印值,颜色 - 解决篇
  5. window.location.href如何多次请求_何为幂等?如何设计?
  6. 总结对象的两个方法valueof和tostring
  7. Typora+PicGo+Gitee 图床配置
  8. ‘sort’命令的14个有用的范例
  9. 通过tf的tensorboard可视化训练进度
  10. windows防火墙ntp服务器_ad域windows ntp服务器配置详解
  11. 这一周我学习了什么(一)
  12. IMS:InputChannel通过socket发送Input给App
  13. html5 龙,百度移动可搜龙点睛 技术创新挺进HTML5元年
  14. 拜登签署芯片法案后,英特尔股票的前景如何?
  15. DPDK应用示例指南简介(汇总)
  16. 安全策略篇 安全策略发展历程详解
  17. 生物特征识别学科发展报告
  18. 网络安全应急响应技术实战指南(奇安信)
  19. Date_Calendar_SimpleDateFormat_大浮点数和大整数
  20. 知识图谱在金融领域的应用

热门文章

  1. css和jquery_CSS3和jQuery的版式效果
  2. [个人笔记]千牛新版店铺升级概要
  3. 用计算机弹歌曲谱子,计算器弹歌曲谱子
  4. Python爬虫基础库(RBX)的实践_田超凡
  5. RecycleView 实现左右列表并排
  6. 计算机桌面有去不掉的框,电脑屏幕有残留刷新去不掉怎么办
  7. OMRON CP1HPLC 电子手轮控制伺服,如何接线,设定,编写程序
  8. 遵义微红科技社群团购系统为企业打造最佳卖货方式
  9. php盒子模型,CSS 盒子模型
  10. 在线文本保留中文提取过滤工具