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
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.