使用 ffmpeg 转换为 gif 的视频具有框图案背景

Posted

技术标签:

【中文标题】使用 ffmpeg 转换为 gif 的视频具有框图案背景【英文标题】:videos converted to gif with ffmpeg have a box pattern background 【发布时间】:2017-08-09 18:59:47 【问题描述】:

我最近开始使用 ffmpeg 将我制作的小视频转换为 gif。但是,我注意到我制作的所有 GIF 都有某种图案背景。视频和gif的区别不是太明显,但是在视频预览和gif预览的区别中可以看的很清楚:

Original video on youtube

Gif in imgur album, along with a thumbnail of the gif and the video

我发送给ffmpeg转换的命令:

ffmpeg -i "video path" -pix_fmt rgb24 "output file path"

我已经尝试过使用和不使用 -pix_fmt rgb24。有什么想法吗?

【问题讨论】:

【参考方案1】:

调色板过滤器在这里工作,因为palettegen过滤器默认应用Frankie Sierra dithering v2 "Lite"

ffmpeg -i in.mp4 -lavfi [0]split[a][b];[a]palettegen[p];[b]fifo[v];[v][p]paletteuse out.gif

请注意,FFmpeg 的 GIF 编码器不支持 RGB24。最好选择pal8,因为调色板仅限于 256 种颜色。

ffmpeg -i in.mp4 -lavfi [0]split[a][b];[a]palettegen[p];[b]fifo[v];[v][p]paletteuse,format=pal8 out.gif

【讨论】:

你是对的,无法让它工作(而且很奇怪)。无论如何,改为赞成这个。请小心使用 Sierra Lite,因为它就像 Floyd-Steinberg 一样会分发错误,这意味着您在制作动画时可能会出现一些奇怪的抖动。 解决了!万分感谢!我自己永远也想不通哈哈。

以上是关于使用 ffmpeg 转换为 gif 的视频具有框图案背景的主要内容,如果未能解决你的问题,请参考以下文章

使用 ffmpeg 实现 MP4 与 GIF 的互转

如何在 Flutter 中将 GIF 转换为 mp4 视频?

C#使用FFmpeg 将视频格式转换成Gif图片示例

FFMPEG视频转换问题

FFMPEG - 转换具有多个音频和字幕的视频

FFMPEG PHP - 将 gif 转换为 mpeg