使用 FFMPEG 将 .mov 转换为 .mp4 并保留 alpha 通道

发布于 2025-01-07 03:03:30 字数 6746 浏览 0 评论 0原文

我正在尝试将带有 Alpha 通道的 Quicktime 的 .mov 文件转换为 .mp4 电影。我正在使用 FFMPEG,并且可以成功地将视频转换为 .mp4 视频,但我丢失了 alpha 通道。

这是我正在运行的命令:
ffmpeg -i BLUE_LOWER_THIRD.mov -vcodec libx264 -vpremedium blue_lower_third.mp4

我在 Ubuntu 11.10 上运行它。这是有关我安装 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

mp4 文件中是否可以有 alpha 通道?如果是这样,你如何使用 FFMPEG 做到这一点?

编辑:这是运行命令的输出。

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

踏雪无痕 2025-01-14 03:03:31

这:

编解码器“libx264”的像素格式“bgra”不兼容,自动选择格式“yuv420p”

是您的 alpha 丢失的地方。尝试指定包含 alpha 信息的不同像素格式,但显然 x264 库并不全部支持它们。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文