[FFmpeg-user] split/select/overlay Buffer queue overflow, dropping

Basin Ilya basinilya at gmail.com
Wed Aug 19 11:23:44 CEST 2015


Hi.

> You could feed the same input to several filter graphs.
Thanks.

> In the meantime, you can use trim=end=4
You see, I actually need to extract fragments of the video and have a
repeated last frame of a fragment between them:

    select='between(mod(t,16),0,4)'

This is why I don't want EOF after first fragment.

If only I could overlay the previous frame on condition, I wouldn't need
the select filter.


19.08.2015 11:19, Nicolas George пишет:
> Le primidi 1er fructidor, an CCXXIII, Basin Ilya a écrit :
>> During processing it prints Buffer queue overflow and in the end there's
>> a still image in out1.mkv.
>>
>> My guess is that one of the nodes in filter graph cannot consume new
>> frames from one input, because it's waiting for another input, but I
>> don't understand why.
>>
>> It looks like out1 is waiting for out0, although they should be independent.
> 
> That is not exactly that, but almost. The problem is that ffmpeg arbitrarily
> decides to try to get a frame for out0, but beyond 4, there will be no more
> frames, but select can not know it unless it tries. Since filters are
> required to return a frame when asked to, it continues to pull on its side
> of split, never leaving a chance to the other side to run.
> 
> Dropping the requirement and adding a timestamp to avoid that kind of pull
> loop is amongst my projects.
> 
> In the meantime, you can use trim=end=4 instead of select: since it is
> higher level it knows that there will be no more frames after 4 and returns
> EOF.
> 
>> Why do I use "split"? Because the real source is /dev/video0.
> 
> You could feed the same input to several filter graphs.
> 
> Regards,
> 
> 
> 
> _______________________________________________
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-user
> 


More information about the ffmpeg-user mailing list