ffmpeg - 覆盖多个 gif 和 png 并生成一个新的 gif

标签 ffmpeg fluent-ffmpeg

这个问题在这里已经有了答案:





How to convert multiple files with ffmpeg to GIFs [closed]

(1 个回答)


9 个月前关闭。




我有一个输入列表(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 - 覆盖多个 gif 和 png 并生成一个新的 gif,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69431308/

相关文章:

node.js - 用fluent-ffmpeg创建GIF,覆盖不显示?

node.js - 输入格式“highpass=f=300, fluent ffmpeg npm 不可用

php - 计算响应的文件大小?

php - FFMPEG 和 PHP 的问题

ffmpeg 无效的流说明符 : si

ffmpeg - 在一个命令中运行 FFMPEG 多个覆盖命令

node.js - Fluent-ffmpeg 获取编解码器数据而不指定输出

ffmpeg - 使用 FFmpeg AutoGen 保存到位图适用于 Windows,但不适用于 Linux

android - 使用 setpts 和 atempo 选项的 FFmpeg 命令不匹配音频和视频

ubuntu - ffmpeg 将视频文件从 ubuntu 流式传输到 youtube