How to skip start frames with ffmpeg

11,742

This select filter should skip the first 5 frames:

$ ffmpeg -i input_file -vf select="gte(n\, 5)"   ...

For timespan it's even easier - this skips the first second:

$ ffmpeg -i input_file -ss 1   ...

-ss takes a time duration:

The following examples are all valid time duration:

55 55 seconds

12:03:45 12 hours, 03 minutes and 45 seconds

23.189 23.189 seconds

None of these methods will be perfectly accurate due to the very mechanics of how video compression works (P and B frames can not stand on their own). ffmpeg will try to adjust accordingly:

Note that in most formats it is not possible to seek exactly, so ffmpeg will seek to the closest seek point before position. When transcoding and -accurate_seek is enabled (the default), this extra segment between the seek point and position will be decoded and discarded. When doing stream copy or when -noaccurate_seek is used, it will be preserved.

Refer to the ffmpeg documentation for more.

Share:
11,742

Related videos on Youtube

Darko_Milicic
Author by

Darko_Milicic

Updated on June 15, 2022

Comments

  • Darko_Milicic
    Darko_Milicic about 2 years

    I have using ffmpeg to create short preview of videos...

    $length = $length_video/5;
    
    $ffmpeg_path." -i ".$content." -vf select='lt(mod(t\,".$length.")\,1)',setpts=N/FRAME_RATE/TB -af aselect='lt(mod(t\,".$length.")\,1)',asetpts=N/SR/TB -an ".$content_new.";
    

    Actually this will create 5sec. video. and problem is because first frame is extracted from 0-1 sec.

    There is any chance to skip first frame and extract next 5?

    Problem is because first frame is actually useless because of video intro

    • Gyan
      Gyan about 6 years
      Change to " -ss 1 -i " to skip the first second.
  • Darko_Milicic
    Darko_Milicic about 6 years
    Hmm this should be working good $length_skip = $length_video/2; ffmpeg -ss $length_skip-i file....