L o a d i n g . . .
主打一个C++
文章详情

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

作者近期文章
  • 随手笔记
  • 主打一个C++   2025-01-11 20:02:01
  • 都2000000025年了。还有不能随意访问guthub的,仔细看。在国内其实是可以正常访问的,gfw并没屏蔽。这里给出其中一个简单直接的方法稳定访问。1. 随便百度一个”dn
提示
×
确定
数据库执行: 8次 总耗时: 0.01s
页面加载耗时: 



wechat +447752296473
wechat cpp-blog