ffmpeg to capture screenshot from a video file in a fine time unit

20,460

Try this instead:

ffmpeg -ss 00:00:01.01 -i /my_video_file_dir/video.flv -y -f image2 \
   -vcodec mjpeg -vframes 1 /image_dir/screenshot.jpg

Note that very small increments will not normally result in different images, due to lower frame rates of most videos. 0.001s increments only work with videos of 1000fps framerates :) 0.03 increments should work with a 30fps video, etc.

Share:
20,460
hyperion
Author by

hyperion

Computer Science Student-Coder-Google Fans-Apple Fans

Updated on August 12, 2022

Comments

  • hyperion
    hyperion almost 2 years

    I use ffmpeg to capture screenshot from video. Here is the command code:

    ffmpeg -i /my_video_file_dir/video.flv -y -f image2 -ss 8 -sameq -t 0.001 
    -s 320*240 /image_dir/screenshot.jpg
    

    And I want to capture the screenshot at a fine time unit 8.344 for example

    But it does not output screenshot image by the above command

    In my test, -ss 1,1.5,2,2.5 ... works fine and others not such as 1.1,1.11

    Does andbody know why it happens and how can I capture screenshot at a x.xxx time

  • hyperion
    hyperion over 13 years
    I get the corresponding relation between increments and framerates, thanks a lot!
  • Admin
    Admin about 11 years
    Take a look to the following shot:
  • Admin
    Admin about 11 years
    This is a real solution: ffmpeg -i input.flv -ss 00:00:14.435 -f image2 -vframes 1 out.png
  • Hitesh
    Hitesh over 9 years
    could you look at my question please stackoverflow.com/questions/27189948/…
  • Ahmed Fasih
    Ahmed Fasih over 9 years
    I second @user352353's note, but per trac.ffmpeg.org/wiki/Seeking put the -ss flag before the -i flag for much faster performance! If someone wants to make an account on FFMPEG's Trac and update this wiki page, please do: trac.ffmpeg.org/wiki/…