蓝靛墨菲 - 2023年10月
type: channel
link: https://www.ldmf.net/2023/10/
description: 点滴生活，记录随心
items: 使用ffmpeg转换多帧png为透明gif

使用ffmpeg转换多帧png为透明gif
type: item
date: 2023-10-04T16:09:00+08:00
description: 最终指令首先给出答案，方便后续操作↓ffmpeg -i i.png -lavfi split[v],palettegen,[v]paletteuse o.gif查找答案RT，遇到了一个奇怪的现象，在macOS系统上打开客户的png图片可以看到类似gif图片多帧的效果，但是使用HEX工具打开文件后，显示的文件格式还是png，所以学习了一下:GIF:图像互换格式(Graphics Interchange Format)，是CompuServe公司在 1987 年开发的图像文件格式。GIF文件的数据，是一种基于LZW算法的连续色调的无损压缩格式。其压缩率一般在50%左右，它不属于任何应用程序。GIF格式可以存多幅彩色图像，如果把存于一个文件中的多幅图像数据逐幅读出并显示到屏幕上，就可构成一种最简单的动画。PNG:便携式网络图形（Portable Network Graphics）是一种无损压缩的位图图形格式。其设计目的是试图替代GIF和TIFF文件格式，同时增加一些GIF文件格式所不具备的特性。PNG使用从LZ77派生的无损数据压缩算法，一般应用于JAVA程序、网页或S60程序中，原因是它压缩比高，生成文件体积小。妈耶，也就是PNG是可以完全具备GIF的功能而且可以无损压缩。可是受限于现在的软件不支持png的动画效果（PS，AE无法识别到动画的png，不知道是不是设置的问题），需要将png转换为gif格式后再处理。那如何将这种png图片转为gif呢？方法方法一通过搜索引擎，找到一个网站png-to-gif,这个可以直接将png转为gif，但是你的原始文件需要传输到他的服务器上去方法二既然是图片，那么就有可能被我们的ffmpeg支持，随意试验了一下：ffmpeg -i x.png x.gif成功了，但是透明区域是黑色的，所以使用指令部分的参数来让透明区域保持ffmpeg -i i.png -lavfi split[v],palettegen,[v]paletteuse o.gif就这么搞定了，以上扩展那么如果想将上面的gif转为透明视频mov如何做呢？ffmpeg -i i.gif -vcodec qtrle o.mov再如果，将gif转为png序列帧该如何做呢？ffmpeg -i i.gif -c:v png -pix_fmt rgba %04d.png附录png-to-gifhttps://ffmpeg.org/