欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

ffmpeg合并拼接mp4

程序员文章站 2022-07-02 10:38:39
...

从事音视频相关工作,特别是点播业务的研发同学,经常会遇到视频合并的问题。

今天自己就遇到了一个,将录制产生的多个mp4视频文件合并成一个大的mp4文件。

怎么操作才能满足这个需求呢?

搜索的话,网上有很多ffmpeg合并的方法,但是针对mp4的可行性并方法不多,因为mp4文件有很多限制,比如不能直接拼接。

通过实验,本人发现可行的方法有两种,接下来通过实例分别介绍一下这两种方法。

假设,需要将a.mp4,b.mp4,c.mp4三个视频文件合并成一个merge.mp4文件。

方法一、一步到位(利用转码特性)

直接利用ffmpeg的转码功能,生成需要的mp4文件。

优点:命令简单,方便快捷。

缺点:因为存在转码过程,所以比较耗时。

一行命令解决问题:

ffmpeg -f concat -i list.txt -c copy merge.mp4 // 是不是很简单?注意list.txt文件

其中list.txt文件内容如下:

file a.mp4
file b.mp4
file c.mp4

方法 二、借鸡生蛋(利用ts格式中转)

利用转封装ts格式的质量无损的特性,为合并成mp4文件做准备。

优点:耗时短,时效性好。

缺点:过程繁琐,逻辑复杂。

1)先子片段mp4文件转成ts文件

./ffmpeg -i a.mp4 -c copy -vbsf h264_mp4toannexb a.ts
./ffmpeg -i b.mp4 -c copy -vbsf h264_mp4toannexb b.ts
./ffmpeg -i c.mp4 -c copy -vbsf h264_mp4toannexb c.ts

2)将ts文件合并成mp4文件

./ffmpeg -i 'concat:a.ts|b.ts|c.ts' -c copy -absf aac_adtstoasc merge.mp4

综合上述干货所得,个人比较推荐第二种方法,性能消耗小,特别是遇到大文件合并拼接时,时间太久,体验会很差。欢迎留言讨论。

 

相关标签: 音视频开发