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

Robert Krüger krueger at lesspain.de
Tue May 21 19:23:16 CEST 2013


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)?


More information about the ffmpeg-user mailing list