ffmpeg 拼接mp4_ffmpeg 合并 拼接 mp4视频

同事做字幕识别测试时,360p视频被切成多段带来麻烦。本文介绍用FFmpeg拼接MP4视频的方法,因MP4数据层面直接拼接不行,先将MP4转成TS格式,再拼接TS文件,最后将拼接好的TS文件转回MP4格式,并给出了相应命令行指令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天同事做字幕识别测试,其中360p的视频是直接从CNTV网上下载的,一套好好的节目被切成9段、10段,为测试带来了一点小的麻烦;

所以今天想着用ffmpeg拼接一下这些视频;

需求如下:

1.mp4 2.mp4 … 封装成 combine.mp4

我对各种封装格式还不是很了解,因为之前被坑过,大概知道mp4封装会在一个地方声明duration,因此,如果从数据层面直接剪切和拼接mp4肯定是不行的。

而ts不同于mp4,其封装是一块数据一块时间戳,无论怎么剪切,都不影响ts的正常解码。

因此,首先需要把mp4格式的文件转成ts格式,不过要注意的是,我们要拼接mp4文件,而不是被转码的mp4文件,一次这里转换只需要改变封装格式,音频流和视频流直接复制就行。转换方法:

命令行指令:

ffmpeg.exe –i 1.mp4 –vcodec copy –acodec copy –vbsf h264_mp4toannexb1.ts

ffmpeg.exe –i 2.mp4 –vcodec copy –acodec copy –vbsf h264_mp4toannexb2.ts

……

如此之后,就可以开始ts文件的拼接了。有一个指令copy:

命令行指令:

copy/b “1.ts”+“2.ts”+…+”n.ts” /y “combine.ts”

//copy为cmd的指令,/b意思为二进制 /y意思为yes,一般情况下写不写无所谓,不过当生成的文件已经存在时,有了/y就等于直接回答了yes,不再提示是否覆盖,如果没有/y,则cmd指令会询问你是否覆盖,这时候你需要输入y/n;

拼接好之后,再将ts封装格式转换回mp4

命令行指令:

ffmpeg.exe –icombine.ts –acodec copy –vcodec copy –absf aac_adtstoasc combine.mp4

至此,大功告成;

参考文章:

//此文提出的方法行不通,估计是ffmpeg版本不同所导致的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值