我最近一直在使用ffmpeg修剪一些视频,并且我注意到随着修剪位置的增加,修剪视频所需的时间也增加了,即使持续时间相同。 (5 seconds)
下面给出了将视频从0
修剪到5
秒的命令,处理仅需1秒。
ffmpeg -y \
-i input.mp4 \
-filter_complex \
"[0:v]trim=0:5,setpts=PTS-STARTPTS[v0];
[0:a]atrim=0:5, asetpts=PTS-STARTPTS[a0]
" -map "[v0]" -map "[a0]" output.mp4
但是,当我尝试使用完全相同的命令,但索引不同,从300
秒到305
修剪视频时,需要5 seconds
。
ffmpeg -y \
-i input.mp4 \
-filter_complex \
"[0:v]trim=300:305,setpts=PTS-STARTPTS[v0];
[0:a]atrim=300:305, asetpts=PTS-STARTPTS[a0]
" -map "[v0]" -map "[a0]" output.mp4
这是我的问题
答案 0 :(得分:1)
您正在使用过滤器修剪流,因此从文件开始到修剪点的所有帧都仍必须解码才能修剪。
对于MP4文件,请执行输入查找,这只会从最近的关键帧中提取帧。无需使用滤波器,因为所有调整和时间戳重置均通过输入开关进行。
ffmpeg -y -ss 300 -to 305 -i input.mp4 -map 0:v -map 0:a output.mp4