Convert .mov to .mp4 and keep alpha channel using FFMPEG
This:
Incompatible pixel format 'bgra' for codec 'libx264', auto-selecting format 'yuv420p'
is where your alpha's being lost. Try specifying a different pixel format that includes alpha information, though obviously they're not all supported by the x264 library.
Mark S.
Updated on June 18, 2022Comments
-
Mark S. almost 2 years
I am trying to convert a .mov file that is Quicktime with Alpha Channel to a .mp4 movie. I am using FFMPEG and I can successfully convert the video to a .mp4 video, but I loose the alpha channel.
Here is the command I am running:
ffmpeg -i BLUE_LOWER_THIRD.mov -vcodec libx264 -vpre medium blue_lower_third.mp4
I am running this on Ubuntu 11.10. Here is the information about my install of ffmpeg.
ffmpeg version 0.7.3-4:0.7.3-0ubuntu0.11.10.1, Copyright (c) 2000-2011 the Libav developers built on Jan 4 2012 16:08:51 with gcc 4.6.1 configuration: --extra-version='4:0.7.3-0ubuntu0.11.10.1' --arch=amd64 --prefix=/usr --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-vaapi --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdc1394 --enable-shared --disable-static avutil configuration: --extra-version='4:0.7.3ubuntu0.11.10.1' --arch=amd64 --prefix=/usr --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-vaapi --enable-libopenjpeg --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdirac --enable-libmp3lame --enable-librtmp --enable-libx264 --enable-libxvid --enable-libvo-aacenc --enable-version3 --enable-libvo-amrwbenc --enable-version3 --enable-libdc1394 --enable-shared --disable-static avcodec configuration: --extra-version='4:0.7.3ubuntu0.11.10.1' --arch=amd64 --prefix=/usr --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-vaapi --enable-libopenjpeg --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdirac --enable-libmp3lame --enable-librtmp --enable-libx264 --enable-libxvid --enable-libvo-aacenc --enable-version3 --enable-libvo-amrwbenc --enable-version3 --enable-libdc1394 --enable-shared --disable-static avformat configuration: --extra-version='4:0.7.3ubuntu0.11.10.1' --arch=amd64 --prefix=/usr --enable-vdpau --enable-bzlib --enable-libgsm --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --enable-libvpx --enable-runtime-cpudetect --enable-vaapi --enable-libopenjpeg --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libdirac --enable-libmp3lame --enable-librtmp --enable-libx264 --enable-libxvid --enable-libvo-aacenc --enable-version3 --enable-libvo-amrwbenc --enable-version3 --enable-libdc1394 --enable-shared --disable-static libavutil 51. 7. 0 / 51. 7. 0 libavcodec 53. 6. 0 / 53. 6. 0 libavformat 53. 3. 0 / 53. 3. 0 libavdevice 53. 0. 0 / 53. 0. 0 libavfilter 2. 4. 0 / 2. 4. 0 libswscale 2. 0. 0 / 2. 0. 0 libpostproc 52. 0. 0 / 52. 0. 0
Is it possible to have alpha channel in an mp4 file? If so, how do you do it with FFMPEG?
Edit: This is the output from running the command.
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'BLUE_LOWER_THIRD.mov': Metadata: major_brand : qt minor_version : 537199360 compatible_brands: qt creation_time : 2010-12-21 10:36:51 Duration: 00:00:15.00, start: 0.000000, bitrate: 8050 kb/s Stream #0.0(eng): Video: png, bgra, 1920x1080, 8043 kb/s, PAR 1920:1920 DAR 16:9, 30 fps, 30 tbr, 30 tbn, 30 tbc Metadata: creation_time : 2010-12-21 10:36:51 Stream #0.1(eng): Data: tmcd / 0x64636D74, 0 kb/s Metadata: creation_time : 2010-12-21 10:39:48 File 'blue_lower_third.mp4' already exists. Overwrite ? [y/N] y Incompatible pixel format 'bgra' for codec 'libx264', auto-selecting format 'yuv420p' [buffer @ 0x7e3d80] w:1920 h:1080 pixfmt:bgra [ffsink @ 0x7edda0] auto-inserting filter 'auto-inserted scaler 0' between the filter 'src' and the filter 'out' [scale @ 0x7fc480] w:1920 h:1080 fmt:bgra -> w:1920 h:1080 fmt:yuv420p flags:0x4 [libx264 @ 0x7fcf20] using SAR=1/1 [libx264 @ 0x7fcf20] using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle Cache64 [libx264 @ 0x7fcf20] profile High, level 4.0 [libx264 @ 0x7fcf20] 264 - core 116 r2042 178455c - H.264/MPEG-4 AVC codec - Copyleft 2003-2011 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=200 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.41 aq=1:1.00 Output #0, mp4, to 'blue_lower_third.mp4': Metadata: major_brand : qt minor_version : 537199360 compatible_brands: qt creation_time : 2010-12-21 10:36:51 encoder : Lavf53.3.0 Stream #0.0(eng): Video: libx264, yuv420p, 1920x1080 [PAR 1920:1920 DAR 16:9], q=0-69, 200 kb/s, 30 tbn, 30 tbc Metadata: creation_time : 2010-12-21 10:36:51 Stream mapping: Stream #0.0 -> #0.0 Press ctrl-c to stop encoding frame= 450 fps= 11 q=9.0 Lsize= 83kB time=14.93 bitrate= 45.7kbits/s its/s video:75kB audio:0kB global headers:0kB muxing overhead 10.287784% frame I:2 Avg QP:18.30 size: 2584 [libx264 @ 0x7fcf20] frame P:118 Avg QP:16.22 size: 310 [libx264 @ 0x7fcf20] frame B:330 Avg QP:16.75 size: 106 [libx264 @ 0x7fcf20] consecutive B-frames: 1.8% 0.9% 1.3% 96.0% [libx264 @ 0x7fcf20] mb I I16..4: 49.7% 50.0% 0.3% [libx264 @ 0x7fcf20] mb P I16..4: 0.5% 0.0% 0.0% P16..4: 0.3% 0.0% 0.0% 0.0% 0.0% skip:99.0% [libx264 @ 0x7fcf20] mb B I16..4: 0.0% 0.0% 0.0% B16..8: 0.3% 0.0% 0.0% direct: 0.0% skip:99.6% L0:37.2% L1:62.6% BI: 0.2% [libx264 @ 0x7fcf20] final ratefactor: 9.32 [libx264 @ 0x7fcf20] 8x8 transform intra:38.0% inter:56.1% [libx264 @ 0x7fcf20] coded y,uvDC,uvAC intra: 0.9% 4.2% 2.9% inter: 0.0% 0.1% 0.0% [libx264 @ 0x7fcf20] i16 v,h,dc,p: 64% 32% 1% 3% [libx264 @ 0x7fcf20] i8 v,h,dc,ddl,ddr,vr,hd,vl,hu: 0% 2% 97% 0% 1% 0% 0% 0% 0% [libx264 @ 0x7fcf20] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 5% 60% 23% 2% 6% 1% 1% 1% 2% [libx264 @ 0x7fcf20] i8c dc,h,v,p: 86% 13% 1% 0% [libx264 @ 0x7fcf20] Weighted P-Frames: Y:0.0% UV:0.0% [libx264 @ 0x7fcf20] ref P L0: 79.4% 2.1% 13.2% 5.2% [libx264 @ 0x7fcf20] ref B L0: 61.1% 37.7% 1.2% [libx264 @ 0x7fcf20] ref B L1: 92.3% 7.7% [libx264 @ 0x7fcf20] kb/s:40.85
-
MoDJ almost 11 yearsh.264 does not support an alpha channel. You could use ffmpeg to encode to the Quicktime Animation codec, that file format supports an alpha channel. You might also try a newer format like WebM that supports an alpha channel.