2017-05-11 19:10 GMT+03:00 Gyan <gyando...@gmail.com>:
>
> Loop the image input i.e. `-loop 1 -i in.png`
>
> Unfortunately, there's a bug at present which prevents the use of
> shortest=1 in the blend filter. (https://trac.ffmpeg.org/ticket/6292)
>
> So, you'll have to terminate using -t N where N is the duration of the
> video, or if the video has an audio stream, by adding -shortest.

Works. But the result was still wrong. Then I figured out what was wrong,
and my idea with swapping layers was actually right. The final solution is
to change the video format to rgba to fix the wrong result, and swap the
blend layers to fix the drops, then we don't need that loop. I have also
stored the premult png separately trying to optimize the speed:

ffmpeg -i mask.png -filter_complex
"geq=r='p(X,Y)*alpha(X,Y)/255':g='p(X,Y)*alpha(X,Y)/255':b='p(X,Y)*alpha(X,Y)/255':a='p(X,Y)'"
mask_premult.png

ffmpeg -i tmp.flv -i mask_premult.png -filter_complex
"[0:v]format=rgba[rgbv];[rgbv][1:v]blend=all_expr=A-B:c3_expr=B,lutrgb=a=maxval-val,geq=r='min(255,255*p(X,Y)/alpha(X,Y))':g='min(255,255*p(X,Y)/alpha(X,Y))':b='min(255,255*p(X,Y)/alpha(X,Y))'"
tmp.mkv

But the fps=1.0 makes me sad (comparing with fps=40 without filters when
just encoding). Perhaps writing the filter in C is the right way if I want
something usable in real-time application...
_______________________________________________
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
ffmpeg-user-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to