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
综合上述干货所得,个人比较推荐第二种方法,性能消耗小,特别是遇到大文件合并拼接时,时间太久,体验会很差。欢迎留言讨论。
上一篇: 【JAVA编码专题】总结
推荐阅读
-
详解Numpy中的数组拼接、合并操作(concatenate, append, stack, hstack, vstack, r_, c_等)
-
numpy 进行数组拼接,分别在行和列上合并的实例
-
PHP+FFMPEG实现将视频自动转码成H264标准Mp4文件
-
PHP调用ffmpeg对视频截图并拼接脚本
-
java利用ffmpeg合并多个视频文件
-
android采用FFmpeg实现音频混合与拼接剪切
-
ffmpeg 切片 MP4转m3u8 最简单实用
-
Win10 安装ffmpeg,以及mp4转m3u8(2)
-
ffmpeg合并M3U8加密的视频 ts 合并为 mp4
-
FFmpeg 实现MP4 转m3u8