ffmpeg 命令裁剪合并

1 mp4格式:
裁剪从一个视频中的1分钟、2分钟、3分钟开始截取10秒
ffmpeg -i test_1280x720.mp4 -ss 00:01:00 -t 10 -codec copy copy1.mp4
ffmpeg -i test_1280x720.mp4 -ss 00:02:00 -t 10 -codec copy copy2.mp4
ffmpeg -i test_1280x720.mp4 -ss 00:03:00 -t 10 -codec copy copy3.mp4
在这里插入图片描述
合并:
方法1:
ffmpeg -i “concat:copy1.mp4|copy2.mp4|copy3.mp4” -codec copy out_mp41.mp4
(这个方法播放完第一个视频后,没继续播放后面的)
在这里插入图片描述
方法2:
ffmpeg -f concat -i mp4list.txt -codec copy out_mp42.mp4
在这里插入图片描述
mp4list.txt:
在这里插入图片描述
2 ts格式:
转成ts格式
ffmpeg -i copy1.mp4 -codec copy -vbsf h264_mp4toannexb copy_1.ts
ffmpeg -i copy2.mp4 -codec copy -vbsf h264_mp4toannexb copy_2.ts
ffmpeg -i copy3.mp4 -codec copy -vbsf h264_mp4toannexb copy_3.ts
在这里插入图片描述
合并:
方法1:
ffmpeg -i “concat:copy_1.ts|copy_2.ts|copy_3.ts” -codec copy out_ts1.mp4
在这里插入图片描述
方法2:
ffmpeg -f concat -i tslist.txt -codec copy out_ts2.mp4
在这里插入图片描述
tslist.txt:
在这里插入图片描述
(方法一和方法二在输出文件上时间有点不同,方法一中输出文件 时间38秒,但播放在20秒时就直接变成30秒,但画面是正常的。实际播放时间也是30秒)

3 flv格式:
转成flv格式
ffmpeg -i copy1.mp4 -codec copy copy1.flv
ffmpeg -i copy2.mp4 -codec copy copy2.flv
ffmpeg -i copy3.mp4 -codec copy copy3.flv
在这里插入图片描述
合并:
方法1:
ffmpeg -i “concat:copy1.flv|copy2.flv|copy3.flv” -codec copy out_flv1.mp4
在这里插入图片描述
(这个方法播放完第一个视频后,没继续播放后面的)

方法2:
ffmpeg -f concat -i flvlist.txt -codec copy out_flv2.mp4
在这里插入图片描述
flvlist.txt:
在这里插入图片描述
建议:1、使用方法二进行拼接
2、转成ts文件进行拼接

(分离某些封装格式(例如mp4/flv/mkv等)中的h264的时候,需要首先写入SPS和PPS,否则会导致分离出来 的数据没有SPS、PPS而 无法播放,h264码流的SPS和PPS信息存储在AVCodecContext结构体的extradata中,需要使用ffmpeg中名称为"h264_mp4toannexb"的bitstream filter处理)

不同编码格式的拼接情况
1:
修改音频编码

ffmpeg -i copy2.mp4 -vcodec copy -acodec ac3 -vbsf h264_mp4toannexb copy2_ac3.ts
此时是还可以播放的:ffplay copy2_ac3.ts
(播放时是有10秒,但知道文件显示只有4秒多)
在这里插入图片描述
mpeg -i “concat:copy_1.ts|copy2_ac3.ts|copy_3.ts” -codec copy out_ts1.mp4
ffplay out_ts1.mp4,播放完第一段就到第三段了,第二段没有了
在这里插入图片描述
1:
修改音频采样率

ffmpeg -i copy2.mp4 -vcodec copy -acodec aac -ar 96000 -vbsf h264_mp4toannexb copy2_aac.ts
在这里插入图片描述
ffmpeg -i “concat:copy_1.ts|copy2_aac.ts|copy_3.ts” -codec copy out_ts1.mp4
ffplay out_ts1.mp4,播放完第一段就到第三段了,第二段没有了
在这里插入图片描述
2:
修改视频编码格式

ffmpeg -i copy2.mp4 -vcodec libx265 -acodec copy copy2_265.ts
在这里插入图片描述
ffmpeg -i “concat:copy_1.ts|copy2_265.ts|copy_3.ts” -coc copy out_ts1.mp4
(播放到第二段时只声音正常,没画面,到第三段又恢复正常)

3:
修改视频分辨率

ffmpeg -i copy2.mp4 -vcodec libx264 -s 800x472 -acodec copy -vbsf h264_mp4toannexb copy2_264.ts
在这里插入图片描述
ffmpeg -i “concat:copy_1.ts|copy2_264.ts|copy_3.ts” -coc copy out_ts1.mp4
(可以播放)
在这里插入图片描述
最后:
1:视频分辨率可以不同,但是编码格式需要一样
2:音频编码格式需要一样,音频参数采样率、声道等也要一样的
3:把每个视频封装格式统一为ts流,在拼接输出时现设置需要的封装格式(MP4等)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值