Convert .mov to .mp4 and keep alpha channel using FFMPEG

12,614

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.

Share:
12,614
Mark S.
Author by

Mark S.

Updated on June 18, 2022

Comments

  • Mark S.
    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
    MoDJ almost 11 years
    h.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.