FFmpeg 是一个完整的跨平台解决方案,用于以编程方式编辑媒体文件。有数百个可用的命令选项,很容易让人感到不知所措。在本文中,我们将介绍您应该了解的 10 个基本 FFmpeg 选项。
视频在数字世界中发挥着重要作用 – 87%使用视频进行营销的企业增加了网站流量,而且越来越多的企业正在这样做。自2016年以来,这一数字增加了41%。
如果您正在开发视频编辑工具,那么您应该了解FFmpeg。它是一个命令行工具,广泛应用于视频播放器、视频编辑软件、流媒体平台等不同的应用程序中。
它是用于开发媒体相关应用程序的强大且多功能的工具,因为它提供了数百种选项来执行不同类型的编辑和流媒体任务。然而,初学者在查看 FFmpeg文档中的所有选项时可能会感到不知所措。为了帮助您入门,我们列出了本文中常用的 10 个基本 FFmpeg 选项,并包含示例。
什么是 FFmpeg
FFmpeg 是一个完整的跨平台解决方案,用于录制、转换和流式传输音频和视频。它可以解码、编码、转码、复用、解复用、流式传输、过滤和播放任何格式的任何媒体文件。它还具有高度可移植性,因为它可以在各种构建环境、机器架构和配置(如 Linux、Mac OS X、Microsoft Windows 等)中编译和运行。
它包含多种工具,供最终用户转换、播放和分析媒体文件和库,供开发人员在不同的应用程序中使用。这些库包括 libavcodec、libavutil、libavformat、libavfilter、libavdevice、libswscale 和 libswresample。当您下载 FFmpeg包或可执行文件时,它们将自动下载。
如何使用 FFmpeg
FFmpeg 可以在终端或命令行界面中使用。要使用 FFmpeg,您需要从官方 FFmpeg下载页面下载并安装适合您操作系统的软件包和可执行文件。ffmpeg
安装后,通过在终端中运行来验证安装。如果安装成功,您应该会看到 FFmpeg 版本和默认配置设置。
之后,您可以在终端中运行不同的命令来对图像、视频和音频文件执行各种任务。一些常见用法包括将文件从一种格式转换为另一种格式、从视频文件中提取音频、将多个文件合并为一个文件等。您还可以使用 FFmpeg 更改视频或音频文件的分辨率、比特率和其他参数。
一般来说,FFmpeg命令遵循以下结构:
ffmpeg [global_options] {[input_file_options] –i input_url} … {[output_file_options] output_url} …
在终端中运行命令,您应该在工作目录中得到结果。
1.输入文件(-i)
使用此选项指定命令的输入文件。它可用于任何格式的图像、视频或音频文件。在命令中,提供输入文件的文件路径,后跟选项-i
。
在单个命令中,您可以使用多个输入文件,每个文件都遵循选项-i
。一个例子是当您需要向视频添加水印时。为此,您将使用视频和水印(图像)作为输入。
示例(单输入)
ffmpeg -i input.mp4 output.avi
示例(多个输入)
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay" output.mp4
2. 开始时间偏移(-ss)
使用此选项指定视频或音频文件的开始时间。选项后面的值-ss
应以 的格式给出hh:mm:ss
,其中hh
是小时,mm
是分钟,ss
是秒。
您可以使用该-ss
选项修剪视频或从视频中提取给定时间戳的图像。
例子
ffmpeg -ss 00:01:30 -i input.mp4 output.mp4
上面的命令将从 00:01:30 开始输入视频并将其保存为“ output.mp4 ”。
要控制何时停止输入视频,您可以添加该-t
选项(我们接下来将看到如何使用它)。
3. 持续时间(-t)
hh:mm:ss
使用此选项以 或秒的格式指定输入或输出文件的持续时间。
当它用作输入选项时,它将限制输入文件的持续时间。另一方面,当输出文件的持续时间达到您将其用作输出选项时指定的持续时间后,它将停止写入输出文件。尽管如此,两者都应该给你相同的结果。
实例1
ffmpeg -i input.mp4 -t 00:00:05 output.mp4
实例2
ffmpeg -t 00:00:05 -i input.mp4 output.mp4
实例3
ffmpeg -i input.mp4 -t 5 output.mp4
上面的三个命令将在 00:00:05 停止视频,并在输出文件中显示前 5 秒。
您还可以使用-t
选项来-ss
指定视频的开始和结束。
ffmpeg -ss 00:01:30 -t 5 -i input.mp4 output.mp4
它将从输入视频的 00:01:30 开始读取,并在 5 秒后停止。
4.编解码器(-编解码器:v,-编解码器:a)
使用此选项可以指定在输出文件之前使用时的编码器和在输入文件之前使用时的解码器。它可以用于视频和音频流,并且可以在后面指定其类型-codec
:
- 视频:
-codec:v
或-c:v
或-vcodec
- 音频:
-codec:a
或-c:a
或-acodec
在单个命令中,您可以指定视频和音频编解码器或其中之一。
例子
ffmpeg -i input.mp4 -codec:v libx264 -codec:a libmp3lame output.mkv
上面的命令将使用 H.264 视频编解码器和 MP3 音频编解码器将 MP4 文件转换为 MKV 文件。除了libx264
和之外libmp3lame
,您还可以使用许多其他编解码器,例如 libwebp、mpeg2、aac、flac等。
提示:为了加快任务速度,请使用copy
(仅输出)来指示流不被重新编码。
5. 比特率(-b:v、-b:a)
比特率会影响媒体文件的质量。比特率越大,质量越高(文件大小也越大)。根据不同的要求,通常会调整媒体流的比特率来提高/降低质量或文件大小。
与编解码器类似,比特率选项也适用于每个流(视频/音频):
- 视频:
-b:v
- 声音的:
-b:a
例子
ffmpeg -i input.mp4 -b:v 64k output.mp4
上面的命令会将视频比特率设置为 64kbps。您也可以使用M
Mbps 的缩写。
6. 过滤器(-filter:v, -fitler:a)
使用此选项可将视频和音频过滤器应用到输入文件。FFmpeg 文档中列出了数百个可用的过滤器。要使用过滤器,您必须具有相同流类型的单个输入和单个输出。
- 视频:
-filter:v
或-vf
- 音频:
-filter:a
或-af
例子
ffmpeg -i input.mp4 -filter:v "rotate=90" output.mp4
上面的命令将应用旋转滤镜并将视频旋转 90 度。
7. 尺寸(-s)
使用此选项指定输出文件的分辨率或帧大小,格式为“宽x高”。-vf scale=w:h
这与添加到命令以使用缩放视频过滤器相同。
例子
ffmpeg -i input.mp4 -s 640x480 output.mp4
上面的命令将获取输入视频,将其重新编码为 640×480 像素的分辨率,并将结果保存到“ output.mp4 ”。
但是,如果宽高比不同,输出文件中的结果将不遵循指定的大小。比例过滤器将保留输入的显示宽高比 (DAR),并使用命令中指定的高度根据其样本宽高比 (SAR) 计算输出的宽度。
因此,要在不保留宽高比的情况下更改分辨率,我们需要在缩放视频后重置 SAR。不使用-s
,而是使用比例过滤器:
ffmpeg -i input.mp4 -vf scale=640:480,setsar=1 output.mp4
8. 帧率(-r)
帧速率也称为每秒帧数 (fps)。它衡量一秒钟内出现帧数的速度,它会影响视频的流畅度。您可以使用该-r
选项来指定输出文件的帧速率。
例子
ffmpeg -i input.mp4 -r 30 output.mp4
上面的命令会将视频的帧速率更改为 30 fps。除了视频的流畅度之外,如果与原始帧率差异过大,其时长也会发生变化。
9. 纵横比(-aspect)
使用此选项指定输出文件的纵横比。方面可以是浮点数字符串(例如1.3333、1.7777)或格式为的字符串num:den
,例如4:3和16:9。
实例1
ffmpeg -i input.mp4 -aspect 1.7777 output.mp4
实例2
ffmpeg -i input.mp4 -aspect 16:9 output.mp4
上面的命令会将视频的宽高比设置为 1.7777/16:9。请记住,更改视频的宽高比可能会改变视频的显示方式,并可能导致失真。
10. 不询问就覆盖输出文件 (-y)
此选项将覆盖输出文件,而不要求确认该文件是否已存在。通常,当您在终端中第二次运行相同的命令时,它会提示确认覆盖输出文件。
如果-y
添加该选项,它将直接覆盖旧的输出文件。
例子
ffmpeg -i input.mp4 -y output.mp4
结论
这些只是您可以添加到命令中的一些选项。其他选项可以在 FFmpeg文档中找到,类别包括主、视频、音频和字幕。