[FFmpeg-user] Need more info on blend filter
Paul B Mahol
onemda at gmail.com
Sun Jun 21 20:11:50 CEST 2015
On 6/21/15, compname at verizon.net <compname at verizon.net> wrote:
> I'm trying to overlay a spectrum analyzer display over another
> video. I want the analyzer bars to show on top of the other video,
> but nothing else. The spectrum analyzer video consists of blue bars
> on a black background. I tried the following filter:
>
> [base_vid][spec]blend=all_expr='if(gte(B,10),B,A)':all_opacity=1,format=rgba[out]
>
> This "almost" works in that I get the desired effect more or less,
> but there are some pixels on the edge of the blue bars that turn
> different colors. I think this is because the blend filter makes its
> comparison on each channel individually. The pixel format for
> base_vid & spec is rgba. In order to have a successful transparent
> overlay, I need to have the comparison on B made on the luminance
> only. So I changed the pix_fmt for base_vid & spec to yuvj444p,
> which then lets me compare c0 (luminance) in the blend filter. The
> problem is I need to have the luminance of B control the other 3
> channels as well. I don't see how this can be done given what's
> given in the ffmpeg-filters manual. What I really need is something like
> this:
>
> [base_vid][spec]blend=c0_expr='if(gte(B,10),B,A)':c1_expr='if(gte(c0,10),B,A)':c2_expr='if(gte(c0,10),B,A:c3_expr=(gte(c0,10),B,A:all_opacity=1,format=yuvj444p[out]
>
> (yes I did try it - doesn't work :( )
>
> Is there a way to do this, or is blend limited to intra-channel
> operations? Thanks.
Currently it is limited to intra-channel operations, maybe i will add
feature to access other channels data too.
Workaround is to use extractplanes filter to extract plane you want to
filter and than merge it back with mergeplanes filter.
>
> _______________________________________________
> ffmpeg-user mailing list
> ffmpeg-user at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
More information about the ffmpeg-user
mailing list