[FFmpeg-user] Alpha not working as expected with geq filter

Robert Krüger krueger at lesspain.de
Wed May 22 08:58:56 CEST 2013


On Tue, May 21, 2013 at 7:34 PM, Paul B Mahol <onemda at gmail.com> wrote:
> On 5/21/13, Robert Krueger <krueger at lesspain.de> wrote:
>> On Tue, May 21, 2013 at 6:56 PM, Paul B Mahol <onemda at gmail.com> wrote:
>>> On 5/21/13, Robert Krueger <krueger at lesspain.de> wrote:
>>>> Hi,
>>>>
>>>> I am trying to generate a test file using nullsrc and the geq filter
>>>> to obtain an image that has color and alpha channel values defined by
>>>> equations like so:
>>>>
>>>> ffmpeg -f lavfi -i nullsrc=s=256x256:d=0.01 -vf
>>>> scale,geq='r=255*(X/W):g=255*(Y/H):b=255*((X/W)*(Y/H)):alpha_expr=255*(1-Y/H)'
>>>> -pix_fmt rgba -y ~/tmp/generated-sd-alpha.png
>>>>
>>>> The generated png file does not contain any transparent pixels as far
>>>> as I can see and I wonder what I have done wrong. I found trac ticket
>>>> #2520 which has some similarities but it is marked as fixed. Full
>>>> command line and output:
>>>>
>>>> ffmpeg -f lavfi -i nullsrc=s=256x256:d=0.01 -vf
>>>> scale,geq='r=255*(X/W):g=255*(Y/H):b=255*((X/W)*(Y/H)):alpha_expr=255*(1-Y/H)'
>>>> -pix_fmt rgba -y ~/tmp/generated-sd-alpha.png
>>>> ffmpeg version N-53322-gb1bbd71 Copyright (c) 2000-2013 the FFmpeg
>>>> developers
>>>>   built on May 21 2013 16:18:03 with llvm-gcc 4.2.1 (LLVM build
>>>> 2336.11.00)
>>>>   configuration: --enable-gpl
>>>>   libavutil      52. 33.100 / 52. 33.100
>>>>   libavcodec     55. 10.101 / 55. 10.101
>>>>   libavformat    55.  7.100 / 55.  7.100
>>>>   libavdevice    55.  1.100 / 55.  1.100
>>>>   libavfilter     3. 68.101 /  3. 68.101
>>>>   libswscale      2.  3.100 /  2.  3.100
>>>>   libswresample   0. 17.102 /  0. 17.102
>>>>   libpostproc    52.  3.100 / 52.  3.100
>>>> Input #0, lavfi, from 'nullsrc=s=256x256:d=0.01':
>>>>   Duration: N/A, start: 0.000000, bitrate: N/A
>>>>     Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 256x256
>>>
>>> Input does not have any alpha, thus alpa can't be changed.
>>
>> I saw that but then I thought the geq filter would automatically use a
>> format with alpha if an alpha expression was there, regardless of what
>> was used in the previous member of the filter chain. Then I started
>> looking for a way to force the source to have alpha. I tried
>> - using -pix_fmt rgba as an input option but got an error message
>> telling me that pixel format is an unsupported option
>> - using color=0x80808080 as the source because I hoped setting an
>> alpha value would somehow make it use a pixel format with alpha
>> support
>>
>> So how do I force alpha to be there in the source other than
>> generating a dummy video with alpha and using that as an input (which,
>> of course I can do but I was looking for the more elegant solution
>> first because I thought I must be missing some option to force a pixel
>> format)?
>
> Add format filter before geq filter, like this: -vf format=rgba,geq.....

adding format=rgba or gbrap both worked and did what I was looking
for. Thanks a lot!

Sloppy research on my part. I was searching the docs for an option to
the scale filter to specify the pixel format and did not even know
that the format filter existed.


More information about the ffmpeg-user mailing list