On 8/1/17, Jon bae <jonba...@gmail.com> wrote: > 2017-08-01 9:53 GMT+02:00 Paul B Mahol <one...@gmail.com>: > >> On 8/1/17, Jon bae <jonba...@gmail.com> wrote: >> > 2017-07-31 22:16 GMT+02:00 Paul B Mahol <one...@gmail.com>: >> > >> >> On 7/31/17, Jonathan Baecker <jonba...@gmail.com> wrote: >> >> > >> >> > >> >> > 2017-07-31 14:41 GMT+02:00 Paul B Mahol <one...@gmail.com >> >> > <mailto:one...@gmail.com>>: >> >> > >> >> > On 7/31/17, Jon bae <jonba...@gmail.com >> >> > <mailto:jonba...@gmail.com>> >> >> > wrote: >> >> > > 2017-07-31 14:00 GMT+02:00 Paul B Mahol <one...@gmail.com >> >> > <mailto:one...@gmail.com>>: >> >> > > >> >> > >> On 7/31/17, Jon bae <jonba...@gmail.com >> >> > <mailto:jonba...@gmail.com>> wrote: >> >> > >> > 2017-07-31 10:30 GMT+02:00 Paul B Mahol <one...@gmail.com >> >> > <mailto:one...@gmail.com>>: >> >> > >> >> >> >> > >> >>> >> >> > >> >>> What exactly you tried? >> >> > >> >>> >> >> > >> >>> Perhaps you want premultiply filter? >> >> > >> >>> >> >> > >> >>> Yes I have a video and a lower third, and I want to >> overlay >> >> > the lower >> >> > >> >> third. But my alpha channel from the lower third is not >> >> > pre-devided >> >> > >> >> with >> >> > >> >> the alpha channel, so I need to do a channel division in >> >> > ffmpeg. >> >> > >> >> Something like: >> >> > >> >> >> >> > >> >> ffmpeg -i video.mp4 -i lowerthird.png -filter_complex >> >> > >> >> [1:v]geq=r=r/a:g=g/a:b=b/a[gq];[0:v][gq]overlay ... >> >> output.mp4 >> >> > >> >> >> >> > >> >> I see that you wrote a filter for this, but can you please >> >> > give me an >> >> > >> > example of how it works? I don't get it to run. >> >> > >> >> >> > >> "I don't get it to run" means nothing to me. >> >> > >> >> >> > >> I'm not sure if I use the filter correct... But with this: >> >> > > >> >> > > ffmpeg -i video.mp4 -i image.png -filter_complex >> >> > > "[0:v]format=rgba[a];[1:v]format=rgba[b];[a][b]premultiply" >> >> > > >> >> > > My result is, that everything what had alpha = 0, in my image, >> >> > is >> >> > now >> >> > > black. Mybe I understand the use case wrong, but how you would >> >> > use this >> >> > > filter? >> >> > >> >> > Try harder to explain your use case? >> >> > >> >> > Sorry, my english is not so good, but I will try it. In the >> >> > attachment >> >> > you found 3 images. Universum.png is my original lower third, it >> >> > comes >> >> > out from blackmagic fusion. Universum-comp.jpg show the composite of >> >> > a >> >> > background video with the lower third, this is the correct result. >> >> > The >> >> > Universium-ffmpeg is the version from ffmpeg, as you see ffmpeg >> handles >> >> > the alpha channel different so the lower third is more dark. >> >> > >> >> > I can simulate the same effect, from ffmpeg, in my compositing >> program, >> >> > when I load the lower third image with the option "Post-Multiply by >> >> > Alpha". I guess this is what ffmpeg does in Background, when it load >> >> > images with alpha channel. >> >> > To get rid of this effect now in my composition program I have to >> >> > divide >> >> > the color channel from the lower third with its own alpha: >> >> > red/alpha;green/alpha;blue/alpha. Now I can overlay the lower third >> and >> >> > the result is correct. >> >> > >> >> > This division now I would need in ffmpeg. I though I can do it with >> >> > your >> >> > premultiply filter, but maybe not. >> >> >> >> Perhaps you want overlay filter? >> >> >> > >> > No the overlay filter don't handle the alpha channel correct, that is >> what >> > I was trying to say. >> > >> > You can try it by your own - get this 3 images and run this command: >> > >> > ffmpeg -loop 1 -f image2 -i backgroud.png -i multiplied-alpha.png >> > -filter_complex overlay -pix_fmt rgb24 -f sdl "multiplied alpha" >> > >> > ffmpeg -loop 1 -f image2 -i backgroud.png -i pre-divide-alpha.png >> > -filter_complex overlay -pix_fmt rgb24 -f sdl "divide alpha" >> > >> > The second one overlay the image correct. The first one overlay the >> > image >> > different, because the alpha channel is not the same. >> > >> >> I stll do not know what you are trying to tell me. >> >> Do you have equatition how should R/G/B be calculated with Alpha? >> > > I think to, that my hole description make it more complicate, then my > question to the begin. I was trying to tell you, that my image, what I want > to overlay, need to be process before, because its alpha channel is not in > a way ffmpeg needs it for the overlay filter. > > You know that there is different way how a image have its color calculated > with its own alpha channel. The color can be multiplied with the alpha, or > can be straight. ( > https://microsoft.github.io/Win2D/html/PremultipliedAlpha.htm ) > > My image now have a multiplied alpha. To get a correct overlay I have to: > > *a.* unmultiply the alpha channel >
I'm just writing this filter. But you could do this really slowly with geq filter. > ImageColor/ImageAlpha > or: > > *b.* to overlay the image with a different math operation: > > > foregroundColor + ( backgroundColor * ( 1 - foregroundAlpha ) ) I plan to add this mode to overlay filter. > > > I have make now more tests and it look like that method *a.* still not > working 100%, even when it should. But method *b.* works. > > > So my new question is: can ffmpeg combine images with a different math. Or > is there a filter where I can write my own blend expressions (I know the > blend filter, but until now I had no success with this one.) blend does not allow for using components from other planes, and adding such feature is not trivial. _______________________________________________ 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".