I have a flv video and want to dump let's say 3s
length of the video after first keyframe PICT_TYPE_I
meet after 00:39
. I ready the document of ffmpeg seeking
and quote here
ffmpeg -ss 00:23:00 -i Mononoke.Hime.mkv -frames:v 1 out1.jpg
This example will produce one image frame (out1.jpg) at the twenty-third minute from the beginning of the movie. The input will be parsed using keyframes, which is very fast. As of FFmpeg 2.1, when transcoding with ffmpeg (i.e. not just stream copying), -ss is now also "frame-accurate" even when used as an input option. Previous behavior (seeking only to the nearest preceding keyframe, even if not precisely accurate) can be restored with the -noaccurate_seek option.
So I think if I use this command (put -ss
before -i
)
ffmpeg -noaccurate_seek -ss 00:39 -i input.flv -r 10 -s 720x400 -t 3.12 dump.flv
And this should dump a video that last 3.12s
and begin with the first keyframe
after 00:39
right? after all, this is what I need.
But the result is dump.flv
not start with a keyframe
, ie a PICT_TYPE_I
frame.
I know I could find all keyframe
start time with ffprobe
and re-calculate the -ss
seeking time to achieve this. But is there a better way?