FFMPEG- Convert video to images

Ffmpeg

Ffmpeg Problem Overview


how can i convert a video to images using ffmpeg? Example am having a video with total duration 60 seconds. I want images between different set of duration like between 2-6 seconds, then between 15-24 seconds and so on. Is that possible using ffmpeg?

Ffmpeg Solutions


Solution 1 - Ffmpeg

Official ffmpeg documentation on this: Create a thumbnail image every X seconds of the video

Output one image every second:

ffmpeg -i input.mp4 -vf fps=1 out%d.png

Output one image every minute:

ffmpeg -i test.mp4 -vf fps=1/60 thumb%04d.png

Output one image every 10 minutes:

ffmpeg -i test.mp4 -vf fps=1/600 thumb%04d.png

Solution 2 - Ffmpeg

You can use the select filter for a set of custom ranges:

ffmpeg -i in.mp4 -vf select='between(t,2,6)+between(t,15,24)' -vsync 0 out%d.png

Solution 3 - Ffmpeg

Another way is to use ffmpeg library for python, particularly useful if you don't want to add ffmpeg to your pc environment. Start by installing ffmpeg on conda with:conda install ffmpeg Then you can write a script as bellow:

import ffmpeg
input_file_name = 'input_video.mp4'
(ffmpeg
 .input(input_file_name )
 .filter('fps', fps=10, round = 'up')
 .output("%s-%%04d.jpg"%(input_file_name[:-4]), **{'qscale:v': 3})
 .run())

Solution 4 - Ffmpeg

In addition to the select filter in Gyan's answer (which I use with eq rather than between), I came across another filter in the manual: thumbnail

> Select the most representative frame in a given sequence of > consecutive frames. > > The filter accepts the following options: > > - n: Set the frames batch size to analyze; in a set of n frames, the filter will pick one of them, and then handle the next batch of n > frames until the end. Default is 100. > > Since the filter keeps track of the whole frames sequence, a bigger n > value will result in a higher memory usage, so a high value is not > recommended. > > ### Examples > > - Extract one picture each 50 frames: > > thumbnail=50 > > - Complete example of a thumbnail creation with ffmpeg: > > ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionhackView Question on Stackoverflow
Solution 1 - FfmpegVitaliy FedorchenkoView Answer on Stackoverflow
Solution 2 - FfmpegGyanView Answer on Stackoverflow
Solution 3 - FfmpegNahom AymereView Answer on Stackoverflow
Solution 4 - FfmpegLouis MaddoxView Answer on Stackoverflow