[FFmpeg-user] Image extraction broken with ffmpeg, but not with mencoder. How can I fix this?

Robert Krüger krueger at lesspain.de
Thu Sep 5 14:32:55 CEST 2013


On Thu, Sep 5, 2013 at 2:23 PM, Paul B Mahol <onemda at gmail.com> wrote:
> On 9/5/13, Robert Krueger <krueger at lesspain.de> wrote:
>> On Thu, Sep 5, 2013 at 1:11 PM, Tom Evans <tevans.uk at googlemail.com> wrote:
>>> On Wed, Sep 4, 2013 at 9:46 PM, James Board <jpboard2 at yahoo.com> wrote:
>>>> I consulted the documentation.  It doesn't explain why how '-vsync 0'
>>>> stops
>>>> ffmpeg from artificially inserting duplicate frames into your output
>>>> image files.
>>>> If you think the documentation does explain this, them point out which
>>>> sections
>>>> explain.
>>>
>>> The vsync section in the manual describes the behaviour of the
>>> different vsync options.
>>>
>>> "0" passes through each frame with its timestamp to the muxer. This
>>> means if your source is VFR then you will not have a CFR output. If
>>> you were transcoding video+audio, this would probably result in audio
>>> desynch.
>>>
>>> "1" will duplicate and/or drop frames as needed in order to have the
>>> required output fps. Eg, if a section of the VFR video is 10fps, and
>>> the requested ofps is 25fps, then ffmpeg will duplicate frames to get
>>> the desired fps, and avoid audio desynch. This produces CFR files.
>>>
>>> "2" can drop frames and/or pass them through with their timestamps to
>>> the muxer. This enables the muxer to generate VFR files.
>>>
>>> The default is "-1", which intelligently chooses between "1" and "2"
>>> based upon the capabilities of the muxer you are feeding. So if you
>>> don't want duplicates or dropped frames, you must not use "-1", "1" or
>>> "2".
>>>
>>> So why do you get the dupes. It would seem like your input video is
>>> VFR, and you are outputting to image2, which is a CFR muxer, so ffmpeg
>>> is duplicating frames to get your requested output.
>>>
>>> BTW, this seemed quite clear to me from the docs for vsync. Could you
>>> suggest any improvements that would have made it clearer for you?
>>>
>>>
>>> The linked ticket explains the reasoning for this. This is effectively
>>> your position:
>>>
>>>> Yeah I agree that for most people, their default thought is
>>>> "I'm converting to images? It will output one output image per
>>>> input frame" so +1 from me for making -vsync vfr default in this case...
>>>> :)
>>
>> Just as one sampling point: For me it is the expected/intuitive
>> behavior for the image2 demuxer (just to emit the images as they are)
>
> image2 DEmuxer really does that.

my bad. I meant muxer.


More information about the ffmpeg-user mailing list