On 5/11/17, SviMik <svi...@gmail.com> wrote: > 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...
If this is about alpha premultiply, there is premultiply filter. _______________________________________________ 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".