[FFmpeg-user] alphamerge filter use problem

Tim Willison timbot at oddlystudios.com
Sun Apr 7 21:44:07 CEST 2013

Hi, this is my first question ever to a mailing list (or anywhere!).
I have been using ffmpeg for about a year and a half and have figured out
many things on my own but I'm stumped regarding the alphaextract and
alphamerge filters.
I am able to get the proper result every time with images, but have yet to
succeed with videos. I have tried many formats and searched extensively but
have not found a single documented case of someone successfully using this
filter combination and sharing an example. The documentation on the
ffmpeg-filters page is very sparse, and does not give any details of what
formats/codecs are supported.

I think this filter would be very useful if I can figure it out.

Step 1 - alphaextract
This seems to always work, and produces a grayscale video as expected. In
my tests I have used rgba video, as well as quicktime with animation codec

Step 2 - applying the extracted alpha
This works every time for images. However while the encode completes with
video it never provides the masking expected by mapping the extracted alpha
information to the alpha channel of the target video. In my tests with
still images, I found that the output format must be a format that supports
an alpha channel, and I have tried several with video (which I determined
by looking at the source code of the filter).

My command (taken from the docs) looks like this:

ffmpeg -i timbotundelay.mp4 -vf "movie=timbotoverlayextracted.mov [alpha];
[in][alpha] alphamerge [out]" -an -y -pix_fmt rgba -vcodec png composite.mov
ffmpeg version git-2013-04-06-1177416 Copyright (c) 2000-2013 the FFmpeg
  built on Apr  6 2013 17:31:47 with gcc 4.6.1 (Ubuntu/Linaro
  configuration: --enable-gpl --enable-libass --enable-libfaac
--enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb
--enable-libopencore-amrwb --enable-libspeex --enable-librtmp
--enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264
--enable-nonfree --enable-version3 --enable-libfreetype
  libavutil      52. 25.100 / 52. 25.100
  libavcodec     55.  2.100 / 55.  2.100
  libavformat    55.  1.100 / 55.  1.100
  libavdevice    55.  0.100 / 55.  0.100
  libavfilter     3. 49.100 /  3. 49.100
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  2.100 / 52.  2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'timbotundelay.mp4':
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42mp41
    creation_time   : 2013-04-07 18:35:55
  Duration: 00:00:04.97, start: 0.000000, bitrate: 241 kb/s
    Stream #0:0(eng): Video: h264 (Main) (avc1 / 0x31637661), yuv420p,
1280x720 [SAR 1:1 DAR 16:9], 35 kb/s, 30 fps, 30 tbr, 30k tbn, 60 tbc
      creation_time   : 2013-04-07 18:35:55
      handler_name    : ?Mainconcept Video Media Handler
    Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo,
fltp, 189 kb/s
      creation_time   : 2013-04-07 18:35:55
      handler_name    : #Mainconcept MP4 Sound Media Handler
Output #0, mov, to 'composite.mov':
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42mp41
    encoder         : Lavf55.1.100
    Stream #0:0(eng): Video: png (png  / 0x20676E70), rgba, 1280x720 [SAR
1:1 DAR 16:9], q=2-31, 200 kb/s, 15360 tbn, 30 tbc
      creation_time   : 2013-04-07 18:35:55
      handler_name    : ?Mainconcept Video Media Handler
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> png)
Press [q] to stop, [?] for help
frame=  151 fps= 64 q=0.0 Lsize=    1952kB time=00:00:05.03
bitrate=3177.5kbits/s dup=2 drop=0
video:1951kB audio:0kB subtitle:0 global headers:0kB muxing overhead

After this, I see only my red background (timbotundelay.mp4) and no alpha
Thanks so much to anyone who can help me out here. I'm running out of
things to try. I'd particularly like to see how people are using this
filter successfully.

More information about the ffmpeg-user mailing list