[FFmpeg-user] alphamerge filter use problem
Stefano Sabatini
stefasab at gmail.com
Wed Apr 10 17:51:14 CEST 2013
On date Sunday 2013-04-07 15:44:07 -0400, Tim Willison wrote:
> 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.
Yes that's because ffmpeg-filters is supposed to only document filters.
>
> 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
> (bgra).
>
> 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).
The question is, are you sure your output codec supports alpha (most
don't, indeed I couldn't even tell which ones support alpha). You can
try with rawvideo and make sure it is not a codec bug.
> 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
> developers
> built on Apr 6 2013 17:31:47 with gcc 4.6.1 (Ubuntu/Linaro
> 4.6.1-9ubuntu3)
> 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
> --enable-filter=drawtext
> 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':
> Metadata:
> 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
> Metadata:
> 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
> Metadata:
> creation_time : 2013-04-07 18:35:55
> handler_name : #Mainconcept MP4 Sound Media Handler
> Output #0, mov, to 'composite.mov':
> Metadata:
> 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
> Metadata:
> 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
> 0.067323%
>
> After this, I see only my red background (timbotundelay.mp4) and no alpha
> applied.
I tried a variant of your command and seems to work fine here. Also note
that you need a background to show an image with overlay. Something
like:
ffplay -f lavfi color -vf "movie=composite.mov, [in] overlay"
should do.
> 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