在倒车视频时保持透明度

时间:2017-10-10 07:17:07

标签: video ffmpeg

我需要反转视频并保留Alpha通道。 ffmpeg(版本3.3.4)做得很好,但我无法弄清楚如何保持alpha通道。

这是我执行的命令:

ffmpeg -i curtain.webm -vf reverse reversed.webm

根据我在互联网上发现的内容,反向过滤器不应该改变质量,只应反转帧,但结果文件小于原始文件。

正如评论中所述,这里是完整的控制台输出:

ffmpeg -i curtain.webm -vcodec vp9 -vf reverse curtain_retry.webm
ffmpeg version 3.3.4 Copyright (c) 2000-2017 the FFmpeg developers
built with Apple LLVM version 8.1.0 (clang-802.0.42)
configuration: --prefix=/opt/local --enable-swscale --enable-avfilter
 --enable-avresample --enable-libmp3lame --enable-libvorbis --enable-libopus
 --enable-libtheora --enable-libschroedinger --enable-libopenjpeg
 --enable-libmodplug --enable-libvpx --enable-libsoxr --enable-libspeex 
 --enable-libass --enable-libbluray --enable-lzma --enable-gnutls
 --enable-fontconfig --enable-libfreetype --enable-libfribidi --disable-libxcb
 --disable-libxcb-shm --disable-libxcb-xfixes --disable-indev=jack
 --disable-outdev=xv --enable-audiotoolbox --enable-sdl2
 --mandir=/opt/local/share/man --enable-shared --enable-pthreads
 --cc=/usr/bin/clang --enable-vda --enable-videotoolbox --arch=x86_64
 --enable-yasm --enable-libx265 --enable-gpl --enable-postproc --enable-libx264
 --enable-libxvid
  libavutil      55. 58.100 / 55. 58.100
  libavcodec     57. 89.100 / 57. 89.100
  libavformat    57. 71.100 / 57. 71.100
  libavdevice    57.  6.100 / 57.  6.100
  libavfilter     6. 82.100 /  6. 82.100
  libavresample   3.  5.  0 /  3.  5.  0
  libswscale      4.  6.100 /  4.  6.100
  libswresample   2.  7.100 /  2.  7.100
  libpostproc    54.  5.100 / 54.  5.100
Input #0, matroska,webm, from 'curtain.webm':
  Metadata:
    encoder         : Lavf57.71.100
  Duration: 00:00:04.37, start: 0.000000, bitrate: 976 kb/s
    Stream #0:0(eng): Video: vp9 (Profile 0), yuv420p(tv, progressive), 1920x1080, SAR 1:1 DAR 16:9, 30 fps, 30 tbr, 1k tbn, 1k tbc (default)
    Metadata:
      alpha_mode      : 1
Stream mapping:
  Stream #0:0 -> #0:0 (vp9 (native) -> vp9 (libvpx-vp9))
Press [q] to stop, [?] for help
[libvpx-vp9 @ 0x7fab4800d200] v1.6.1
Output #0, webm, to 'curtain_retry.webm':
  Metadata:
    encoder         : Lavf57.71.100
    Stream #0:0(eng): Video: vp9 (libvpx-vp9), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], q=-1--1, 200 kb/s, 30 fps, 1k tbn, 30 tbc (default)
    Metadata:
      alpha_mode      : 1
      encoder         : Lavc57.89.100 libvpx-vp9
    Side data:
      cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
    frame=  131 fps=2.7 q=0.0 Lsize=      94kB time=00:00:04.33 bitrate= 177.4kbits/s speed=0.0909x    
    video:92kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.486628%

1 个答案:

答案 0 :(得分:0)

所以我找到了解决方案。

简短版本:

ffmpeg -i original.mov -vcodec qtrle -vf reverse reversed.mov

之后将reversed.mov转换为具有透明度的.webm文件没有问题。

更长的版本:

我还尝试了该文件的源版本的命令(.mov,编解码器是Apple Quicktime RLE Video,606.4MB),结果文件要小得多,编码也不同(H264,594KB)。所以它肯定与ffmpeg选择我的输出文件结尾的默认编码,不支持透明度。所以我在ffmpeg -codecs中查找了RLE并将其设置为显式编解码器。

由于输入和输出都具有相同的编码(VP9),因此在反转.webm文件时仍然无法理解透明度丢失的原因。我尝试明确地设置编解码器,但这并没有真正改变任何关于透明度丢失的事情。

相关问题