[FFmpeg-devel] imagepipe filter (was [PATCH] avfilter: add dynoverlay filter.)

Moritz Barsnick barsnick at gmx.net
Wed Sep 28 17:53:10 EEST 2016


On Wed, Sep 28, 2016 at 12:40:24 +0000, Priebe, Jason wrote:
> Like I said, I don't see any way to decode an in-memory encoded
> image (PNG, JPG, etc.) with the existing function calls.  I only
> see ff_load_image(), which takes a filename.

The image2pipe demuxer already handles a "stream" of still image files:

$ (cat 01.png; sleep 3; cat 02.png) | ffmpeg -f image2pipe -i - [...]
(This Unix "|" pipe could be replaced by a named pipe.)

Unfortunately, what it does not do, is to set the timestamp of the
incoming image to the wallclock, or to the realtime offset. Instead, it
assumes a constant frame rate.

If it did set the timestamps accordingly, you could duplicate its input
frames via the fps filter before overlaying the image. This also
assumes the fps filter could duplicate images as long as it doesn't get
new ones, to fulfill the constant output rate. I guess it doesn't do
that currently.

> I think you are right -- the *concept* of named pipes exists in
> Windows, but the mkfifo() call doesn't create them.  You have
> to use calls like CreateNamedPipe() and ConnectNamedPipe().

Yes, you'd need a helper program in order to be able to achieve
something as easy as Unix's "cat 03.png > /my/fifo".

Just thinking out loud,
Moritz


More information about the ffmpeg-devel mailing list