ffmpeg - 叠加多个 gif 和 png 并生成一个新的 gif
ffmpeg - overlay multiple gifs and pngs and generate a new gif
我有一个输入列表(gif 和 png 的组合),我正在尝试叠加并创建一个新的 gif。我能够使用此命令和以下结果实现此目的:
_ffmpeg
.withOptions([
'-ss 1',
'-i animated.gif',
'-i base-goldfish.png',
'-i eyes-wink.gif',
'-i mouth-pleased.png',
'-i palette.png',
'-filter_complex [0][1]overlay[i1];[i1][2]overlay[i2];[i2][3]overlay',
'-f gif',
])
.output('./res.gif')
.on('start', console.log)
.on('error', console.error)
.run();
如您所见,结果非常粗糙。然后我生成了一个 palette.png
希望提高质量。
但是我很难找到使用 complex_filter
组合叠加层和调色板的语法。有人知道吗?
ps1: 我也试过生成一个mp4(质量不错)然后转成.gif,结果同样不好
ps2: 我使用 gifski 将 mp4 转换为 gif 并取得了很好的成功。但我想避免引入新的依赖项。
适应How do I convert a video to GIF using ffmpeg, with reasonable quality?
ffmpeg -ss 1 -i animated.gif -i base-goldfish.png -i eyes-wink.gif -i mouth-pleased.png -filter_complex "[0][1]overlay=format=auto[i1];[i1][2]overlay=format=auto[i2];[i2][3]overlay=format=auto,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif
format=auto
添加到每个 overlay filter 以提高叠加层的质量。
这是我最终得到的命令:
ffmpeg -ss 1 -i animated.gif -i base-goldfish.png -i eyes-wink.gif -i mouth-pleased.png -filter_complex "[0][1]overlay=format=auto[i1];[i1][2]overlay=format=auto[i2];[i2][3]overlay=format=auto,split[s0][s1];[s0]palettegen=stats_mode=single[p];[s1][p]paletteuse=new=1 output.gif
我有一个输入列表(gif 和 png 的组合),我正在尝试叠加并创建一个新的 gif。我能够使用此命令和以下结果实现此目的:
_ffmpeg
.withOptions([
'-ss 1',
'-i animated.gif',
'-i base-goldfish.png',
'-i eyes-wink.gif',
'-i mouth-pleased.png',
'-i palette.png',
'-filter_complex [0][1]overlay[i1];[i1][2]overlay[i2];[i2][3]overlay',
'-f gif',
])
.output('./res.gif')
.on('start', console.log)
.on('error', console.error)
.run();
如您所见,结果非常粗糙。然后我生成了一个 palette.png
希望提高质量。
但是我很难找到使用 complex_filter
组合叠加层和调色板的语法。有人知道吗?
ps1: 我也试过生成一个mp4(质量不错)然后转成.gif,结果同样不好
ps2: 我使用 gifski 将 mp4 转换为 gif 并取得了很好的成功。但我想避免引入新的依赖项。
适应How do I convert a video to GIF using ffmpeg, with reasonable quality?
ffmpeg -ss 1 -i animated.gif -i base-goldfish.png -i eyes-wink.gif -i mouth-pleased.png -filter_complex "[0][1]overlay=format=auto[i1];[i1][2]overlay=format=auto[i2];[i2][3]overlay=format=auto,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" output.gif
format=auto
添加到每个 overlay filter 以提高叠加层的质量。
这是我最终得到的命令:
ffmpeg -ss 1 -i animated.gif -i base-goldfish.png -i eyes-wink.gif -i mouth-pleased.png -filter_complex "[0][1]overlay=format=auto[i1];[i1][2]overlay=format=auto[i2];[i2][3]overlay=format=auto,split[s0][s1];[s0]palettegen=stats_mode=single[p];[s1][p]paletteuse=new=1 output.gif