动画 GIF 通常用于难以使用或无法使用视频文件的地方。常见的情况是在不支持视频的电子邮件中,或者在希望动画自动播放的网站上。电影和电视节目中的短小片段经常被转换成 GIF 并用来制作备忘录。但如何将视频转换成 GIF 动画呢?
在本文中,大眼仔将向您展示如何使用 FFmpeg 将视频转换为 GIF 动画。
什么是 FFmpeg?
FFmpeg 是一款免费的开源软件,用于处理视频、音频和其他多媒体文件和流。它是一个命令行工具,可用于转换视频和音频文件,以及执行视频流、录制、编辑和转码等其他任务。它适用于 Windows、Mac OS X 和 Linux。
前提条件
要学习本教程,请确保您已安装 FFmpeg。你可以在终端运行以下命令检查 FFmpeg 是否已安装:
1 ffmpeg -version
如果没有安装 FFmpeg,可以从 FFmpeg 官方网站下载。
要从视频生成 GIF,需要 FFmpeg v2.6 或更高版本。高于 v2.6 的版本包含调色板生成器和调色板使用过滤器,本文稍后将详细介绍。FFmpeg v2.6 发布于 2015 年,所以如果你最近安装了 FFmpeg,也不会有问题。
将 MP4 视频转换为 GIF 动画
打开终端(或 Windows 的命令提示符)并导航到保存视频文件的文件夹。要将视频转换为 GIF,请运行以下命令:
1 ffmpeg -i input.mp4 output.gif
以下是命令和选项的详细说明:
- ffmpeg:我们要运行的 ffmpeg 软件程序或命令。
- -i input.mp4:输入视频的名称,在我们的例子中使用 input.mp4。
- output.gif:输出 GIF 文件的名称。
命令执行完毕后,你会在 input.mp4 文件旁边看到一个名为 output.gif 的新文件,并可以查看该文件。只需提供带有 .gif 扩展名的输出文件名,FFmpeg 就会自动将视频转换为 GIF 文件。
将部分视频转换为 GIF
GIF 用作备忘录很常见,只需将几秒钟的视频转换为 GIF 即可。为此,请运行以下命令:
1 ffmpeg -i input.mp4 -ss 5.0 -t 2 trimmed.gif
以下是该命令中选项的作用:
- -ss 5:从 5 秒开始提取视频。
- -t 2:设置输出视频的持续时间。
上述 FFmpeg 命令将 mp4 视频转换为 GIF,从 5 秒开始,持续 2 秒。输出文件名为 trimmed.gif。
使用 FFmpeg 创建循环 GIF
反复循环播放的 GIF 也很常见。要创建循环 GIF,我们可以使用 -loop 选项。-loop 选项使用一个数字作为参数,指定 GIF 应循环的次数:
1 ffmpeg -i input.mp4 -loop 0 looped.gif
在本例中,-loop 0 选项让 FFmpeg 永远循环播放 GIF。您也可以指定一个数字,这样 GIF 就会循环多少次。例如,-loop 1 将循环播放 GIF 一次,-loop 2 将循环播放 GIF 两次,以此类推。请注意,循环次数为 1 会播放 GIF 两次,因为 GIF 会播放一次,然后循环一次。如果想完全不循环播放 GIF,可以使用 -loop -1 设置,或者直接省略 -loop 选项。
优化 GIF 文件大小和质量
如果您查看一下刚刚创建的 GIF 文件大小,就会发现它们比原始视频大得多。在示例中大眼仔使用的 .mp4 视频,原始文件为 8.6MB,而 GIF 为 140MB。即使是经过 2 秒钟修剪的视频也有 16MB。
这与视频和 GIF 的压缩方式有关。视频文件压缩和编解码器(如 H.264 和 H.265)对移动图像的编码效率很高。而 GIF 的效率则不高,GIF 的每一帧都作为单独的图像存储,因此文件大小要大得多。
无论何时为互联网创建媒体文件,无论是视频、图像还是音频文件,都应尽量优化文件大小,以加快页面加载速度,降低存储和带宽成本,并获得更好的用户体验。
减小 GIF 动画文件的大小
您可能已经注意到,网上共享的 GIF 宽度和高度(即分辨率)都非常小。与最好使用高清分辨率的视频不同,GIF 恰恰相反,它使用的尺寸要小得多。尺寸越小,文件大小就越小。
缩小文件大小的另一个方法是降低帧频。GIF 的播放有时会显得有点生涩。这通常是因为帧频降低了。帧频是指每秒显示的帧数(fps)。帧频越高,动画越流畅,但文件大小也越大。降低帧频可以减小文件大小,但动画会不那么流畅。
下面是一个减少 GIF 尺寸和帧频的命令:
1 ffmpeg -i input.mp4 -filter_complex "fps=10, scale=-1:360" compressed.gif
该命令中的选项有以下作用:
- -filter_complex:对输出应用一个或多个滤镜,滤镜用引号括起来。
- fps=10:将帧速率设置为每秒 10 帧,我们的原始鲸鱼.mp4 视频使用的是 60fps。
- scale=-1:360:将输出高度设置为 360px,宽度按比例缩放。
我们的新 GIF 文件 compressed.gif 现在为 10.6MB,文件大小减少了 92%。虽然质量不如原版,但仍然可以观看,比我们之前创建的 140MB GIF 要好得多。
提高 GIF 的视觉质量
GIF 的限制之一是每帧只支持 256 种颜色。这意味着,如果视频中的颜色较多,就会在 GIF 中出现色彩失真或色带。如果视频中存在大量渐变色,情况就更是如此。
为了解决这个问题,FFmpeg 使用一个名为 palettegen 的过滤器为 GIF 生成自定义调色板。调色板生成过滤器与调色板使用过滤器结合使用,可生成调色板更接近原始视频的 GIF,并提高 GIF 的视觉质量。
使用原始的 input.mp4 视频素材,我们可以使用以下命令创建带有自定义调色板的新 GIF:
1 ffmpeg -i input.mp4 -filter_complex "[0]split[a][b]; [a]palettegen[palette]; [b][palette]paletteuse" palette.gif
我们再次使用 filter_complex 对输出应用多个过滤器。过滤器用引号括起来,并用分号隔开。以下是每个过滤器的作用:
- [0]split[a][b]:将输入视频分为两个视频流,分别标为 a 和 b。
- [a]palettegen[palette]:将 a 流导向 palettegen,创建一个自定义调色板,存储在名为 palette 的流中。
- [b][palette]paletteuse:使用 paletteuse 将 b 流与来自 palette 的自定义调色板结合起来。
你会发现,在生成调色板时,编码过程非常缓慢。生成的 GIF 文件比我们创建的第一个 output.gif 文件(462MB)还要大,但视觉质量要好得多。
生成经过优化的 GIF 视频文件
综合以上所有步骤,我们就能制作出文件大小更小、视觉质量更好的新 GIF 文件。我们还将对视频进行修剪,并使用一小段视频来制作可在线使用的 GIF。最后,我们将添加一个无限循环。
1 ffmpeg -i input.mp4 -ss 5 -t 2 -loop 0 -filter_complex "fps=10, scale=-1:360[s]; [s]split[a][b]; [a]palettegen[palette]; [b][palette]paletteuse" final.gif
该命令将所有内容整合在一起,将原始视频转换成 3MB、2 秒钟、美观的循环 GIF。除了 [s] 标签外,所有选项现在都应该很熟悉了。这是一个标签,我们用它来引用 fps 和缩放过滤器创建的流。然后,我们使用该标签将数据流分成两个数据流,即 a 和 b。
总结
使用 FFmpeg 以及本教程中的选项和过滤器,您应该能够将视频转换为 GIF,而且这些 GIF 已针对网络进行了优化,看起来非常漂亮。
文章名称:《如何使用 FFmpeg 将视频转换为 GIF 动画教程》
文章固定链接:https://www.dayanzai.me/convert-video-gif-ffmpeg.html
本站资源仅供个人学习交流,请于下载后 24 小时内删除,不允许用于商业用途,否则法律问题自行承担。
猜你喜欢
- 2024-08-11安卓超强视频播放器 MX Player Pro 1.86.0 中文多语免费版
- 2024-09-14安卓无限设计 Infinite Design 3.5.8 中文多语免费版
- 2023-10-02什么是 Windows 中的内存压缩以及如何启用或禁用它?
- 2023-10-27安卓美颜相机 BeautyCam 11.7.41 中文多语免费版
- 2020-06-26多显示器管理工具 DisplayFusion Pro 9.7 中文多语免费版
相关推荐
- 2022-03-02Microsoft Pluton 安全处理器和 TPM 相比它够安全吗?
- 2023-04-04绿色小巧的桌面便签小工具 Stickies 10.1d 绿色汉化版
- 2023-07-21顶级域名说明以及如何为您的网站选择一个顶级域名
- 2024-06-28视频媒体信息检测工具 MediaInfo 24.06 中文多语免费版
- 2024-05-23开源像素艺术编辑软件 PixiEditor 1.2.5.0 中文多语免费版