众所周知,从某些视频网站下载的视频是分段的。比如新浪视频每隔6分钟分段,俗称“6分钟诅咒”。
现在的任务是将这些视频片段合并起来,并且尽量无损。

方法一:FFmpeg concat 协议

对于 MPEG 格式的视频,可以直接连接:

ffmpeg -i "concat:input1.mpg|input2.mpg|input3.mpg" -c copy output.mpg

对于非 MPEG 格式容器,但是是 MPEG 编码器(H.264、DivX、XviD、MPEG4、MPEG2、AAC、MP2、MP3 等),可以包装进 TS 格式的容器再合并。在新浪视频,有很多视频使用 H.264 编码器,可以采用这个方法
ffmpeg -i input1.flv -c copy -bsf:v h264_mp4toannexb -f mpegts input1.ts
ffmpeg -i input2.flv -c copy -bsf:v h264_mp4toannexb -f mpegts input2.ts
ffmpeg -i input3.flv -c copy -bsf:v h264_mp4toannexb -f mpegts input3.ts
ffmpeg -i "concat:input1.ts|input2.ts|input3.ts" -c copy -bsf:a aac_adtstoasc -movflags +faststart output.mp4
保存 QuickTime/MP4 格式容器的时候,建议加上 -movflags +faststart。这样分享文件给别人的时候可以边下边看。

方法二:FFmpeg concat 分离器

这种方法成功率很高,也是最好的,但是需要 FFmpeg 1.1 以上版本。先创建一个文本文件filelist.txt
file 'input1.mkv'
file 'input2.mkv'
file 'input3.mkv'
然后:

ffmpeg -f concat -i filelist.txt -c copy output.mkv

注意:使用 FFmpeg concat 分离器时,如果文件名有奇怪的字符,要在 filelist.txt 中转义。

方法三:Mencoder 连接文件并重建索引

这种方法只对很少的视频格式生效。幸运的是,新浪视频使用的 FLV 格式是可以这样连接的。对于没有使用 MPEG 编码器的视频(如 FLV1 编码器),可以尝试这种方法,或许能够成功。

mencoder -forceidx -of lavf -oac copy -ovc copy -o output.flv input1.flv input2.flv input3.flv

方法四:使用 FFmpeg concat 过滤器重新编码(有损)

语法有点复杂,但是其实不难。这个方法可以合并不同编码器的视频片段,也可以作为其他方法失效的后备措施。

ffmpeg -i input1.mp4 -i input2.webm -i input3.avi -filter_complex '[0:0] [0:1] [1:0] [1:1] [2:0] [2:1] concat=n=3:v=1:a=1 [v] [a]' -map '[v]' -map '[a]' <编码器选项> output.mkv

如你所见,上面的命令合并了三种不同格式的文件,FFmpeg concat 过滤器会重新编码它们。注意这是有损压缩。
[0:0] [0:1] [1:0] [1:1] [2:0] [2:1] 分别表示第一个输入文件的视频、音频、第二个输入文件的视频、音频、第三个输入文件的视频、音频。concat=n=3:v=1:a=1 表示有三个输入文件,输出一条视频流和一条音频流。[v] [a] 就是得到的视频流和音频流的名字,注意在 bash 等 shell 中需要用引号,防止通配符扩展。

提示

  1. 以上三种方法,在可能的情况下,最好使用第二种。第一种次之,第三种更次。第四种是后备方案,尽量避免。
  2. 规格不同的视频合并后可能会有无法预测的结果。
  3. 有些媒体需要先分离视频和音频,合并完成后再封装回去。
  4. 对于 Packed B-Frames 的视频,如果封装成 MKV 格式的时候提示 Can't write packet with unknown timestamp,尝试在 FFmpeg 命令的 ffmpeg 后面加上 -fflags +genpts

FFMpeg无损合并视频的多种方法相关推荐

  1. python合并视频和音频_FFMpeg无损合并视频的多种方法 python | 猴头客

    方法二确实可行 方法1 我试着不行 需要的话自己试试把 python 的调用cmd命令是这么写的 res=os.system("ifconfig"); 众所周知,从某些视频网站下载 ...

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

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

  3. ffmpeg裁剪合并视频

    ffmpeg提供简单的命令参数: ffmpeg -ss START -t DURATION -i INPUT -vcodec copy -acodec copy OUTPUT 对上面的命令稍做个解释. ...

  4. 利用ffmpeg来合并视频

    因为最近要求AcDown加入视频合并功能的呼声非常高(几乎一半多的反馈都在说这个问题),所以下午花了些时间来研究怎样用最方便(不需要最快)的方法来进行视频合并. AcDown之前的版本使用的是某个第三 ...

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

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

  6. 编写Bash脚本实现使用FFmpeg批量合并视频

    前言 使用FFmpeg能够很方便的合并同分辨率的视频.很多时候我们可能需要批量化合并视频,此时可以通过编写Bash脚本来实现. 实现 批量合并视频 合并三个文件夹中的视频结果: result_path ...

  7. 将视频分成一帧一帧python_python ffmpeg任意提取视频帧的方法

    环境准备 1.安装 FFmpeg 音/视频工具 FFmpeg 简易安装文档 2.安装 ffmpeg-python pip3 install ffmpeg-python 3.[可选]安装 opencv- ...

  8. #JavaScript# 合并数组的多种方法 (附源码)

    方法1:concat() concat()方法合并数组,不改变原来的两个数组,数据不变,同时会返回一个新的数组 //concat()方法合并数组不改变原数组,用一个新的数组来接收2个或多个数组的数据g ...

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

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

  10. 视频剪切合并器使用方法,如何使用视频剪切合并器分割合并视频片段

    不论是快手还是抖音,视频网站的火热引起了大家的关注,甚至连七八十岁的老人家也玩起了视频平台,真是开启了全民短视频的时代.录像的过程中,经常会出现一个视频没录完,被打断了,或者是需要换环境,接着录,有时 ...

最新文章

  1. 最年轻和最年长新院士:一个是数学神童 一个曾是氮肥厂工人
  2. 40 自动化运维工具Ansible
  3. sql server 数据库 ' ' 附近有语法错误
  4. linux网络编程之SCTP套接字常用接口
  5. ecs服务器数据迁移_某国际物流集团的云迁移解决方案
  6. leetcode面试题 10.02. 变位词组
  7. 360WIFI 2 树莓派 上网-- 失败
  8. 【机器学习PAI实战】—— 玩转人工智能之美食推荐
  9. db2 联合数据源 mysql_myeclipse连接db2的数据源怎么配
  10. 二进制漏洞利用原理--栈溢出
  11. elf文件格式_Android so(ELF) 文件解析
  12. (转)倒卖火车票的惊人黑幕全过程
  13. Git diffmerge 工具的配置及问题解决
  14. localbridge.exe 参数错误
  15. 360无法打开html,360浏览器打开网页显示不正常怎么办
  16. css隐藏滚动条兼容IE,火狐,chrom
  17. 2021宜宾叙州区二中高考成绩查询,宜宾叙州第二中学2021年录取分数线
  18. ArcMap最短路径分析和网络数据集的构建
  19. P3964 [TJOI2013]松鼠聚会【切比雪夫距离】
  20. 面向ad-hoc查询的实时SQL分析系统

热门文章

  1. 细数阿里 25 个开源的前端项目,让你的 2021 路更加平坦
  2. 厦门大学904数据结构与机器学习资料与辅导
  3. java file数组 初始化_Java之处理数组
  4. 蛋白质ph稳定性计算机模拟,蛋白质分子设计.ppt
  5. CVPR2021 最具创造力的那些工作成果!或许这就是计算机视觉的魅力!
  6. 以下数据库收录外文文献全文的有_【讲座】外文文献的检索与获取
  7. 数据库方面是知识和实战
  8. C语言中如何在不使用数组的情况下求方差?使用数组和使用for循环的区别。
  9. 助力优秀人才选拔培养,为AI发展贡献力量
  10. word页眉页脚修改