我需要反转视频并保留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%
答案 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
文件时仍然无法理解透明度丢失的原因。我尝试明确地设置编解码器,但这并没有真正改变任何关于透明度丢失的事情。