为什么会FFmpeg
在动画边缘已经移除物体的地方产生类似剩余像素的瑕疵,以及如何移除这些瑕疵?
为什么会产生这种洋红色/红色边框以及如何去除它们?
为什么半透明像素选择洋红色/红色?
这是命令:
ffmpeg -pattern_type sequence \
-i "project_1_%05d.png" \
-vf "fps=30,scale=-1:-1:flags=lanczos,palettegen" \
"pallete_1.png" \
&& \
ffmpeg -pattern_type sequence \
-i "project_1_%05d.png" -i "pallete_1.png" \
-filter_complex "fps=30,scale=-1:-1:flags=bicubic[x];[x][1:v]paletteuse" \
"animation_bicubic_1.gif"
FFmpeg 版本:
ffmpeg version 4.2.3 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 9.3.1 (GCC) 20200523
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt
libavutil 56. 31.100 / 56. 31.100
libavcodec 58. 54.100 / 58. 54.100
libavformat 58. 29.100 / 58. 29.100
libavdevice 58. 8.100 / 58. 8.100
libavfilter 7. 57.100 / 7. 57.100
libswscale 5. 5.100 / 5. 5.100
libswresample 3. 5.100 / 3. 5.100
libpostproc 55. 5.100 / 55. 5.100
我创建的序列的第一个 PNG 帧:
第一个命令的结果(调色板):
第二条命令的结果(动画)预览了两个问题:
根据评论部分的要求鉄人,附加了更多具有不同效果的变体:
不带发光效果的版本的第一个 PNG 帧:
PNG 序列中没有发光效果的版本(仅存在伪影):
PNG 序列中没有透明度的版本(没有问题):
确实,透明度处理似乎在结果中添加了伪影和洋红色/红色边框。