为什么处理时间随着修剪位置的增加而增加?

时间:2020-03-05 09:56:31

标签: ffmpeg

我最近一直在使用ffmpeg修剪一些视频,并且我注意到随着修剪位置的增加,修剪视频所需的时间也增加了,即使持续时间相同。 (5 seconds)

enter image description here

下面给出了将视频从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

这是我的问题

  1. 为什么处理时间随着位置的增加而增加?
  2. 有什么办法可以解决这个问题?

1 个答案:

答案 0 :(得分:1)

您正在使用过滤器修剪流,因此从文件开始到修剪点的所有帧都仍必须解码才能修剪。

对于MP4文件,请执行输入查找,这只会从最近的关键帧中提取帧。无需使用滤波器,因为所有调整和时间戳重置均通过输入开关进行。

ffmpeg -y -ss 300 -to 305 -i input.mp4 -map 0:v -map 0:a output.mp4