ffmpeg将视频转为gif
Posted on 2022-07-01 00:01:56 by 主打一个C++
1.普通转换:
ffmpeg -i 待转换的视频.mp4 -vf "scale=256:-1,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" 输出.gif
注释:
-i 参数指定输入文件,这里是 待转换的视频.mp4 。
-vf 参数用于指定视频滤镜(Video Filter)。
scale=256:-1 :
scale 滤镜用于调整视频的分辨率。
256:-1 表示将视频的宽度调整为 256 像素,高度按比例自动调整( -1 表示自动计算)。
split[s0][s1]
split 滤镜将输入的视频流分成两个相同的输出流,分别标记为 [s0] 和 [s1] 。
[s0]palettegen[p] :
[s0] 是 split 滤镜的第一个输出流。
palettegen 滤镜生成一个调色板(palette),用于优化 GIF 的颜色。
[p] 是生成的调色板的输出标记。
[s1][p]paletteuse :
[s1] 是 split 滤镜的第二个输出流。
[p] 是之前生成的调色板。
paletteuse 滤镜使用生成的调色板来优化 GIF 的颜色。
输出.gif :- 这是输出文件的名称,即转换后的 GIF 文件。
这种方法通常用于生成高质量的 GIF 动画,因为它考虑了 GIF 的调色板优化,从而减少了颜色失真。
2.置指定色为透明的转换:
ffmpeg -i 待转换的视频.mp4 -vf "scale=640:-1,split[s0][s1];[s0]palettegen=reserve_transparent=1[p];[s1]colorkey=black:0:0[ckout];[ckout][p]paletteuse=dither=none" 输出.gif
注释:
1. ** -i 待转换的视频.mp4 **:
指定输入文件为 待转换的视频.mp4 。
2. ** -vf **:
设置视频滤镜链(video filterchain)。
3. ** scale=640:-1 **:
调整视频的分辨率,宽度固定为 640 像素,高度按比例自动计算( -1 表示自动计算)。
4. ** split[s0][s1] **:
将视频流分割成两个独立的流,分别标记为 [s0] 和 [s1] 。
5. ** [s0]palettegen=reserve_transparent=1[p] **:
对 [s0] 流应用 palettegen 滤镜生成调色板,并标记为 [p] 。 reserve_transparent=1 表示保留透明色。
6. ** [s1]colorkey=black:0:0[ckout] **:
对 [s1] 流应用 colorkey 滤镜,将黑色区域变为透明,并标记为 [ckout] 。 colorkey=black:0:0 表示将黑色完全透明化。
7. ** [ckout][p]paletteuse=dither=none **:
将 [ckout] 流和调色板 [p] 结合,应用 paletteuse 滤镜, dither=none 表示不使用抖动算法。
总结:不好玩不好玩💩
*转载请注明出处:原文链接:https://cpp.vin/page/14.html