- FFmpeg 是一个线性工具 comandos 跨平台,能够录制、转换和处理音频和视频,并支持多种编解码器和格式。
- 它允许您执行从简单的格式转换到高级任务(例如裁剪、调整大小、插入徽标、生成 GIF 和从图像序列创建视频)的所有操作。
- 当它被集成到脚本和自动化工作流程中时,它的真正潜力就显现出来了,它可以连接片段、应用转场、规范音频和标准化内容制作。
- 只需掌握几个易于理解的命令,就可以构建高效的视频编辑和压缩工作流程,而无需依赖繁琐的图形界面。

如果你经常处理视频,迟早会遇到以下情况: FFmpeg 就像一把瑞士军刀,可用于转换、压缩和自动化任务无论你来自带有图形界面的编辑器,还是来自其他平台,都没关系。 流 或者简单的在线转换器:当您需要精细控制、稀有格式或大规模自动化时,FFmpeg 就派上用场了。
第一次看到它时,确实会有点吓人: 大量的参数、非常长的命令和消息 终端但一旦你理解了它的逻辑,它就变成了一个极其方便的重复性任务工具:更改格式、减小文件大小、裁剪、添加徽标、生成 GIF 或从照片创建延时视频等等。
FFmpeg是什么?为什么它在视频制作中被广泛应用?
FFmpeg 是一套免费的软件工具和库。 这款软件专为录制、转换、处理和流式传输音频和视频而设计。它并非一款拥有精美窗口和按钮的应用程序:它通过命令行控制,这赋予了它极高的灵活性,使其成为自动化、服务器和脚本编写的理想之选。
它的名字指的是 快速前进 MPEG……指的是制定MPEG视频标准的组织。自2000年Fabrice Bellard启动该项目以来,该社区一直在不断扩展其功能…… 无数程序和服务使用的多媒体引擎 在您不知情的情况下(流媒体平台、编辑器、转换器等)。
它最大的优点之一是: 它支持大量的编解码器和容器 (如何选择最佳视频编解码器MP4、MOV、MKV、AVI、WebM、FLV、Ogg、动画 GIF、图像序列 MP3AAC、OGG、WAV、WMA 等等多种格式。只要是你常用的播放器能播放的音频文件,FFmpeg 很可能都能读取或生成。
此外,FFmpeg是 跨平台它可以毫无问题地安装。 Linux, WindowsmacOS 和其他系统 Unix的虽然它是通过控制台使用的,但如果您更喜欢逐步操作而不看到命令,也有几个图形界面在后台使用它。
如何在 Windows、macOS 和 Linux 上安装 FFmpeg

在开始发出命令之前,我们需要安装该工具。 具体过程因操作系统而异。但无论如何,这种事都只做一次,然后你就把它忘了。
在 Windows 上安装 FFmpeg
在Windows系统中,您有多种选择,但最常见的选择之一是下载一个…… 静态包已编译这样可以省去编译任何东西或处理依赖项的麻烦。
典型的工作流程如下:您访问 FFmpeg 官方网站或可靠的构建页面, 下载 一 静态版本,ZIP 或 7z 格式将其解压到您想要的文件夹(例如,在辅助硬盘上),解压后您会看到一个包含多个子目录的目录,其中包括 箱子其中,ffmpeg.exe、ffplay.exe 和 ffprobe.exe 可执行文件位于何处。
为了避免总是需要访问那个文件夹,理想的解决方案是 将 bin 目录的路径添加到系统环境变量中。从“控制面板”>“系统”>“高级系统设置”>“环境变量”中找到“Path”变量,编辑它,并添加指向该 bin 文件夹的完整路径。之后,您就可以编写…… ffmpeg的 它可以在任何游戏主机上运行。
另一个非常方便的替代方案是使用 像 Chocolatey 这样的软件包管理器 并以管理员身份运行: choco install ffmpeg管理员亲自负责安装和路径设置。
在 macOS 上安装 FFmpeg
En Mac最实际的方法是拉 家酿如果没有,请粘贴以下内容进行安装: 脚本 码头安装人员。一旦投入使用,只需:
brew install ffmpeg
几分钟之内你就会拥有 ffmpeg 可从任何终端使用Homebrew 会自动处理依赖项、路径和未来的更新。
如果您更喜欢独自操作,也可以下载 已编译的二进制文件 对于 macOS 来说,虽然需要手动安装,但实际上,使用 Homebrew 可以省去很多麻烦,并且只需简单操作即可保持 FFmpeg 更新。 brew upgrade ffmpeg.
在 Linux 上安装 FFmpeg
在大多数现代发行版中, FFmpeg 可在官方软件仓库中找到。例如,在 Debian、Ubuntu 及其衍生发行版中, 您可以使用以下命令安装:
sudo apt install ffmpeg
在其他发行版中,软件包管理器会有所不同,但原理是一样的: 您需要安装 ffmpeg 软件包及其相关工具。就像 ffprobe 一样。如果你然后运行 which ffmpeg 然后你会得到类似这样的结果 /usr/bin/ffmpeg一切都很好。
在更高级的场景中(例如,需要的服务器) 对特定编解码器或库的特定支持有些人喜欢从源代码编译 FFmpeg,然后手动添加 LAME(用于 MP3)、libogg、libvorbis 等模块,或者将其与 mplayer 集成。在这种情况下,需要预先下载并编译这些库,并调整权限和路径(LD_LIBRARY_PATH)并且符号链接是在 /usr/lib 朝向 FFmpeg 库 /usr/local/lib.
了解 FFmpeg 的基本语法

安装完成后,下一步是了解 如何编写一个最简洁的 FFmpeg 命令一般结构通常如下:
ffmpeg -i entrada.ext salida.ext
关键参数是 -i这表示输入文件或流。该选项前后添加的所有内容都是设置项,会影响输出的处理和生成方式。
简单的事 从视频文件中获取技术信息, 您可以使用:
ffmpeg -hide_banner -i video.mp4
这样,FFmpeg 会显示诸如以下的详细信息: 时长、比特率、视频和音频编解码器、分辨率、帧率 以及其他元数据。该参数 -隐藏横幅 它可以让你看不到庞大的初始配置和编译块,让你专注于真正有用的信息。
以下是一些非常有用的全局参数,可为您提供指导:
- 格式:列出支持的格式(容器)。
- -编解码器显示所有输入和输出编解码器。
- -解码器:详细说明可接受的输入编解码器。
- -编码器:列出导出时可以使用的编解码器。
有了这些最基本的信息,你就可以开始…… 只需更改输出扩展名即可在两种格式之间转换。。 例如:
ffmpeg -i video_origen.mov video_destino.mp4
在这种情况下,FFmpeg 将选择 根据扩展名选择合适的编解码器例如,除非另有说明,否则 MP4 中的视频默认采用 H.264 编码,音频默认采用 AAC 编码。
编解码器、容器和关键质量参数
为了充分发挥 FFmpeg 的性能,这一点至关重要。 区分编解码器和容器MP4(容器)与 H.264 或 H.265(视频编解码器)并不相同,尽管这些术语在日常用语中经常被混淆。
Un 编解码器 它是用于压缩和解压缩音频或视频数据流(H.264、H.265/HEVC、AV1、VP9、AAC、MP3、Ogg Vorbis 等)的算法。 货柜 (MP4、MKV、AVI、MOV、WebM、Ogg 等)是可以包含多个视频和音频轨道的“封装格式”。 字幕 和元数据。
一些常见的容器包括:
- 的AVI:一款经典的 Windows 程序,使用广泛,但存在一些现代限制。
- MOV的QuickTime 标准格式,广泛用于苹果环境。
- MP4:MPEG-4 的标准容器,在各种设备上高度兼容。
- 奥格- 为 Vorbis 或 Theora 等编解码器开放容器。
- MKVMatroska 格式非常灵活开放,是母版制作和存档的理想选择。
在 FFmpeg 中,您主要可以通过以下参数来控制视频质量: -b:v (视频比特率), -b:a (音频比特率)或流行的 CRF 例如,在 H.264 或 H.265 等编解码器中:
ffmpeg -i video.avi -b:v 2500k -b:a 192k salida.mp4
在这种情况下,您可以强制视频比特率为 2.500 kb /秒 以及一段音频录音 192 kb /秒通常来说,更高的比特率意味着更高的视频质量,但也意味着更大的文件大小,反之亦然。而使用 CRF(恒定速率因子)时,逻辑略有不同,因为 数值越低,质量越高,文件越大。例如,在 H.265 中,CRF 值在 18-22 左右的音频在很多情况下与原始音频几乎没有区别。
视频转换、压缩和格式更改
FFmpeg最常见的用途之一是 转换和重新压缩视频,使其体积更小或改变格式。同时保持合理的质量。如果您更喜欢带有图形界面的替代方案,您可以查看 如何使用 VLC 编辑和转换视频.
对于 基本转换只需标明入口和出口即可:
ffmpeg -i origen.avi destino.mpg
如果想要进行更精细的调整,可以指定视频和音频编解码器、质量模式以及容器格式。例如,对于 使用 H.265 (libx265) 压缩视频 音质非常好,而且没有改动音频:
ffmpeg -i "input.mp4" -c:v libx265 -preset veryslow -crf 18 -c:a copy "salida_comprimida.mkv"
您现在正在使用:
- -c:v libx265:H.265 视频编解码器(非常高效)。
- -预设非常慢编码速度较慢,但压缩效果更好。
- -crf 18质量非常好;如果想要更轻的重量,可以选择 20-22 号。
- -c:a 副本:原样复制音频,不进行重新压缩。
如果你愿意 同时压缩音频。 对于 128 kb/s 的 AAC 音频文件,您可以使用:
ffmpeg -i input.mp4 -c:v libx265 -preset veryslow -crf 18 -c:a aac -b:a 128k output.mkv
MKV容器格式非常稳定且灵活,适合此类工作。如果您之后确实需要MP4格式,您可以…… 重多路复用(更换容器而不重新压缩) 搭配:
ffmpeg -i salida.mkv -c copy salida_final.mp4
最后一步是 快因为只有文件的“包装层”发生了变化, 不修改视频和音频内容.
使用 FFmpeg 进行基本编辑操作
FFmpeg 还允许您执行许多操作。 无需打开大型视频编辑器即可完成经典的编辑任务它不适用于大规模创意编辑,但对于特定任务来说,它非常快捷。
截取一段时间
如果您想从视频中提取特定片段,可以使用以下选项。 -SS, -t y -至。 例如:
ffmpeg -i video.mp4 -ss 35 -t 30 fragmento.mp4
在这种情况下, 你从第35秒开始 然后提取 30 秒。另一种写法是:
ffmpeg -i video.mp4 -ss 00:00:35 -to 00:01:05 fragmento.mp4
在这里定义 开始时间和结束时间 格式为小时:分钟:秒。具体顺序取决于您输入的顺序。 -SS 关于 -i切割速度会更快但精度会更低,反之亦然;对于大多数实际用途,您可以像示例中那样进行切割。
更改视频分辨率
要将视频调整为另一种分辨率,例如从 1920×1080 调整为 1000×1000 1280 × 720, 您可以使用:
ffmpeg -i entrada.mov -s 1280x720 salida.mp4
参数 -s 定义输出尺寸。您还可以使用视频滤镜(-vf scale=)以便更好地控制缩放或保持特定比例。
删除或提取音频轨道
如果quieres 仅保留音频 例如,对于 MP3 视频,您可以使用:
ffmpeg -i video.avi -vn -ar 44100 -ac 2 -ab 192k -f mp3 audio.mp3
这表明您不希望视频与 -vn调整采样频率和通道数,并为 MP3 定义合理的音频比特率。
如果你想要的是 从视频中移除音频 如果只想保留图像,可以使用:
ffmpeg -i entrada.mp4 -an -c:v copy salida_sin_audio.mp4
选择 -一个 它会移除音频,同时 -c:v复制 避免重新压缩视频,既节省时间又能保持视频质量。
插入徽标或水印
要在视频的角落放置一个固定的徽标,可以使用滤镜。 覆盖典型示例:
ffmpeg -i video.mp4 -i logo.png -filter_complex "overlay=10:10" salida.mp4
在这个命令中 叠加层=10:10 这表示徽标位于距离左侧边缘 10 像素、距离顶部 10 像素的位置。如果您想将其移动到右下角,可以使用基于宽度和高度的表达式:
overlay=x=(main_w-overlay_w):y=(main_h-overlay_h)
这样,该徽标就能适应任何视频分辨率。 无需手动计算位置。
图像处理:提取帧和创建视频
FFmpeg 不仅适用于经典视频;它在其他方面也非常强大。 视频和图像之间的转换这非常适合延时摄影、定格动画或分析特定帧。
从视频中提取图像
如果你想转换 每一帧 在图像中,类似这样的(更多选项请参见)就足够了。 如何从视频和GIF中提取帧):
ffmpeg -i video.mp4 image%d.jpg
这将为每个帧生成一个文件: image1.jpg、image2.jpg、image3.jpg…如果视频很长,最终会生成数千张图片,因为大多数视频的帧速率在 25 到 30 fps 之间。
为了避免生成大量文件,您可以使用过滤器限制提取范围。 FPS例如,每秒一张图像:
ffmpeg -i video.mp4 -vf fps=1 image%d.png
这样,每秒只会导出原始视频的一张图片,非常适合创建视觉摘要或 自动缩略图.
利用图片制作视频(延时摄影和幻灯片)
如果您有一系列编号的照片(例如, img-01.png、img-02.png、img-03.png…您可以轻松制作视频:
ffmpeg -framerate 5 -i img-%02d.png video.avi
在这种情况下, 帧率 5 它指定最终视频将使用每秒 5 张图片。如果这些图片来自延时摄影,您可以提高速度以获得更流畅的画面,或者降低速度以获得更舒缓的幻灯片效果。
FFmpeg 支持多种命名模式:
- 文件名-%03d.png- 匹配 filename-001.png 到 filename-999.png。
- 文件名-%d.png- 匹配 filename-1.png、filename-2.png 等。
- 文件名-*.png更通用的模式,适用于不严格遵循编号的情况(在这种情况下,您需要额外的参数来控制顺序)。
如果您还想强制输出视频格式为 MP4,并指定特定参数,请执行以下操作。 播放帧率你可以这样做:
ffmpeg -framerate 1 -i img%03d.png -r 25 -pix_fmt yuv420p output.mp4
在这里,你定义了一个 每秒拍摄 1 张图像 播放帧速率为 25 fps,像素格式与大多数播放器兼容。
生成动画 GIF 和简单特效
FFmpeg 的另一个经典功能是将小视频转换为 用于网站或网络的动态 GIF为了提高质量,该流程可以简化为一行,也可以分几个步骤完成。
为 最直接的情况:
ffmpeg -i entrada.mp4 salida.gif
这样可以得到一个能用的 GIF,虽然可能没有达到最佳效果。如果你想要更好地控制 GIF 的大小和质量,可以尝试以下方法: 调整视频大小,生成PNG帧,然后从中创建GIF动画。。 例如:
ffmpeg -i input.mp4 -vf scale=640x360 -c:v h264 -crf 18 -c:a aac salida_intermedia.mp4
ffmpeg -i salida_intermedia.mp4 frame%04d.png
ffmpeg -i salida_intermedia.mp4 salida.gif
或者使用外部 GIF 编辑工具以获得更精细的后期处理。这种工作流程可以让你保持…… 完全控制最终文件的分辨率、质量和大小.
使用脚本和 YAML 实现视频编辑自动化
FFmpeg 的真正优势在于将其集成到…… 用于自动执行重复性任务的脚本如果你每周都制作相同类型的视频(课程、采访、机构宣传片……),你可以定义一个标准的工作流程,让脚本完成几乎所有工作。
一种非常有效的方法是用文字描述你的项目。 YAML 文件(config.yml)您可以在其中详细说明您想要的剪辑、图像、持续时间、剪切、音量和转场,然后脚本会负责将其转换为复杂的 FFmpeg 命令。
借助此系统,您可以例如: 定义元素列表(图像、视频、音频轨道) 这些处理(裁剪、音量变化、重新缩放、标准化)会在临时目录中单独进行,然后以毫米级的精度连接起来,从而保持音频和视频同步。
典型应用场景包括:
- 创建培训视频 幻灯片 + 短片.
- 创建由若干标准模块组成的信息胶囊。
- 为一系列视频生成机构片头和片尾。
使用 FFmpeg 的实用脚本示例
基于这种自动化理念,人们可以构建 各种类型的脚本从最简单的设置到相当复杂的设置,始终以 FFmpeg 为引擎。
用于连接图像和视频的通用脚本
通用脚本可以与……一起使用 异质元素列表 脚本使用 YAML 描述视频、图像和音频片段,并为每个片段分配持续时间、起始和结束修剪、相对音量等参数。脚本会生成预先调整的临时版本,然后构建一个最终版本。 列表文件 使用 FFmpeg 将所有内容连接起来。
这使您能够精细控制:
- 项目最终分辨率和帧率。
- 分别计算各段的体积。
- 无需打开图形编辑器,即可截取每个片段的开头和结尾。
简单脚本:封面图片 + 主视频
更常见的情况是想要 将静态幻灯片显示为封面图片 (标题、标志、活动详情)显示几秒钟,然后播放主视频。
典型脚本 它的作用大致如下:
- 将封面图片转换为 一段约5秒的视频片段.
- 将封面和主视频片段都编码为可拼接的格式(例如,使用 mpegts)。
- 它将两个片段连接起来,而无需重新压缩内容,这样既加快了处理速度,又避免了质量损失。
这种类型的解决方案通常存储在类似这样的路径中: /automation/videos-open-subjects/ 它们可以轻松集成到课堂、讲座或录制演示的录制工作流程中。
为带有转场效果的蒙太奇开发的脚本
在更高层次上,您可以构建一个脚本来组装 多个模块,包含流畅的音频和视频过渡一个典型的例子包括:
- 带有音乐和动画的机构介绍。
- 包含会议标题和详细信息的静态图像。
- 主视频以原始格式录制(开头和结尾可裁剪)。
- 结尾配有动画和音乐。
使用 FFmpeg,您可以应用诸如以下的滤镜: 淡入淡出 (视频过渡) 淡入淡出 (音频过渡)使模块之间的切换更加流畅。此外,您还可以:
- 根据 YAML 中指定的时间,实时剪辑主视频。
- 分别调节每个部分的音量。
- 强制使用标准参数,例如 720p 分辨率和 44.1 kHz 音频。
程序集的逻辑定义在……中 配置文件 包含每个元素的路径、过渡持续时间、切割点等信息,以及一个类似这样的文件夹中的脚本。 /automation/café-edition/ 将所有这些信息转换成 FFmpeg 中的一系列滤镜和映射。最终生成的视频在视觉和听觉上都保持一致,而且只需极少的人工干预。
更多实用命令和高级技巧
除了以上所有功能外,FFmpeg 还具有 无限的使用 一些小众产品,在你需要的时候能帮上大忙。例如:
- 列出或提取元数据:
ffmpeg -i INPUT -f ffmetadata metadata.txt. - 替换视频的音轨 无需触碰视频:
ffmpeg -i video.mp4 -i nuevo_audio.mp3 -map 0:v -map 1:a -c copy salida.mp4. - 在视频中生成音频波形的可视化图像 使用过滤器
showwaves适用于播客类型的视频。 - 更改字幕格式例如,从VTT到ASS:
ffmpeg -i subtitulos.vtt salida.ass要轻松编辑字幕,您可以查看 将 Word 用作字幕编辑器. - Ajustar 体积 迅速地
-vol或者更高级的音频滤波器。
完整的列表几乎不可能管理,但结合官方文档和实际示例,您就可以开始构建了。 你自己常用命令集 这样我们就不用每次都重新发明轮子了。
FFmpeg 从“奇怪的控制台程序”变成了 一个用于转换、压缩、批量编辑和自动化视频创建的中央工具无论是在个人电脑上还是在专业脚本和工作流程中,一旦你习惯了编写一些基本命令,每个新的用例都只是在你已掌握的基础上添加一些小部分而已。
对字节世界和一般技术充满热情的作家。我喜欢通过写作分享我的知识,这就是我在这个博客中要做的,向您展示有关小工具、软件、硬件、技术趋势等的所有最有趣的事情。我的目标是帮助您以简单而有趣的方式畅游数字世界。
