FFMPEG [1]是用于视频处理的最常用的开源软件。
它功能强大且通用性,广泛用于视频网站和商业软件(例如YouTube和iTunes),也是许多音频和视频格式的标准编码/解码实现。

FFMPEG本身是一个庞大的项目,包含许多组件和库文件,最常用的是其命令行工具。本文介绍了FFMPEG命令行如何处理视频,该视频比桌面视频处理软件更简单,更有效。
如果您尚未安装它,则可以根据官方文档[2]首先完成安装。
1。概念
在介绍FFMPEG的使用之前,您需要了解一些视频处理的基本概念。
1.1容器
视频文件本身实际上是一个容器,其中包括视频和音频,还可能包括字幕和其他内容。
有几种常见的容器格式。一般而言,视频文件的后缀名称反映了其容器格式。
•MP4•MKV•WebM•AVI
以下命令查看FFMPEG支持的容器。
$ ffmpeg -formats
1.2编码格式
视频和音频都需要对其进行编码,然后才能将其保存到文件中。不同的编码格式(编解码器)具有不同的压缩率,这可能会导致文件大小和清晰度的差异。
常用的视频编码格式如下。
•H.262•H.264•H.265
上述编码格式是版权的,但可以免费使用。此外,还有几种无版权的视频编码格式。
•VP8•VP9•AV1
常用的音频编码格式如下。
•MP3•AAC
以上所有这些都是有损失的编码格式,编码后丢失了一些细节,以换取压缩后较小的文件大小。从无损编码格式压缩的文件尺寸很大开yun体育app官网网页登录入口,因此我不会在此处介绍它们。
以下命令可以查看FFMPEG支持的编码格式,包括视频编码和音频编码。
$ ffmpeg -codecs
1.3编码器
编码器是实现特定编码格式的库文件。只有安装某种格式的编码器时,才能实现以该格式的视频/音频编码和解码。
这是一些FFMPEG的内置视频编码器。
•libx264:最受欢迎的开源H.264编码器•NVENC:基于NVIDIA GPU的H.264编码器•libx265:开源HEVC编码器•libvpx:Google的VP8和VP9 Eccoder•libaom•libaom:av1 Excoder:av1 Excoder
音频编码器如下。
•libfdk-aac•AAC
以下命令可以查看已安装的FFMPEG。
$ ffmpeg -encoders
2。ffmpeg使用格式
FFMPEG具有很多命令行参数,可以分为五个部分。
$ ffmpeg {1} {2} -i {3} {4} {5}
在上述命令中,五个部分的参数如下。
1。全局参数2。输入文件参数3。输入文件4。输出文件参数5。输出文件
当参数太多时,FFMPEG命令可以用多行写入以方便查看。
$ ffmpeg \[全局参数] \[输入文件参数] \-i [输入文件] \[输出文件参数] \[输出文件]
这是一个例子。
$ ffmpeg \-y \ # 全局参数-c:a libfdk_aac -c:v libx264 \ # 输入文件参数-i input.mp4 \ # 输入文件-c:v libvpx-vp9 -c:a libvorbis \ # 输出文件参数output.webm # 输出文件
上面的命令将MP4文件转换为WebM文件,这两个文件都是容器格式。输入MP4文件的音频编码格式为AAC,视频编码格式为H.264;输出WebM文件的视频编码格式为VP9,音频格式为Vorbis。
如果未指定编码格式,则FFMPEG将单独判断输入文件的编码。因此,上述命令可以简单地写如下。
$ ffmpeg -i input.avi output.mp4
3。公共命令行参数
FFMPEG常用的命令行参数如下。
•-c:指定编码器•-c复制:直接复制而无需重新编码(这更快)•-c:v:指定视频编码器•-c:a:a:a:a:a:fime condoder•-i:指定输入文件•-AN:删除音频流•vn•-vn:删除-vn:删除视频流•-preset•-preset•-preset:指定输出视频质量质量,将影响文件质量kaiyun.ccm,会影响文件的生成快速,速度快。有以下可用值:超快,超快,非常快速,更快,快速,中等,缓慢,慢,较慢,非常慢。 •-y:当输出未经确认时,具有相同名称的文件直接覆盖。
4。常见用法
以下是FFMPEG的几种常见用途。
4.1转换编码格式
转码是指将视频文件从一个编码转换为另一个文件。例如,转换为H.264编码,通常使用编码器libx264,因此您只需要指定输出文件的视频编码。
$ ffmpeg -i [input.file] -c:v libx264 output.mp4
以下是将其转换为H.265代码的写作方法。
$ ffmpeg -i [input.file] -c:v libx265 output.mp4
4.2转换容器格式
传输是指将视频文件从一个容器传输到另一个容器。以下是MP4给WebM的写作方法。
$ ffmpeg -i input.mp4 -c copy output.webm
在上面的示例中,只需传输容器kaiyun全站网页版登录,并且内部编码格式保持不变,因此请使用-c副本来指定直接复制而无需转码,速度更快。
4.3调整代码速率
取消率是指更改编码的比特率,该比特率通常用于减少视频文件的大小。以下示例指定最低比特率为964K,最大比特率为3856K,缓冲区大小为2000k。
$ ffmpeg \-i input.mp4 \-minrate 964K -maxrate 3856K -bufsize 2000K \output.mp4
4.4更改分辨率(变形)
这是将视频(跨性)分辨率从1080p更改为480p的示例。
$ ffmpeg \-i input.mp4 \-vf scale=480:-1 \output.mp4
4.5提取音频
有时,您需要从视频中提取音频(降级),并且可以像以下内容一样编写。
$ ffmpeg \-i input.mp4 \-vn -c:a copy \output.aac
在上面的示例中,-VN表示删除视频,-c:副本意味着不更改音频编码并直接复制它。
4.6添加音轨
添加Muxing意味着将外部音频添加到视频中,例如添加背景音乐或叙述。
$ ffmpeg \-i input.aac -i input.mp4 \output.mp4
在上面的示例中,有两个输入文件:音频和视频,FFMPEG将它们合并到一个文件中。
4.7屏幕截图
以下示例是从指定的时间开始将视频的屏幕截图连续1秒钟。
$ ffmpeg \-y \-i input.mp4 \-ss 00:01:24 -t 00:00:01 \output_%3d.jpg
如果您只需要筛选一个图像,则可以指定仅捕获一个帧。
$ ffmpeg \-ss 01:23:45 \-i input \-vframes 1 -q:v 2 \output.jpg
在上面的示例中,-vframes 1指定只有一个帧被拦截,-Q:V 2表示输出图像质量,通常在1到5之间(1是最高质量)。
4.8种植
切割是指原始视频中的剪辑,并将其作为新视频输出。您可以指定开始时间和持续时间或结束时间。
$ ffmpeg -ss-i -t -c copy $ ffmpeg -ss-i -to -c copy
以下是一个实际的例子。
$ ffmpeg -ss 00:01:50 -i [input] -t 10.5 -c copy [output]$ ffmpeg -ss 2.5 -i [input] -to 10 -c copy [output]
在上面的示例中,-c副本意味着如果音频和视频的编码格式不更改,并且将直接复制。
5。参考链接
•ffmpeg libav教程[3]•数字视频简介[4]•FFMPEG编码和编辑课程[5]•使幻灯片w/ffmpeg [6]
(超过)
参考
[1] FFMPEG:
[2]官方文件:
[3] ffmpeg libav教程:#第3章---转码
[4]数字视频简介:#分裂和合并平滑
[5] FFMPEG编码和编辑课程:
[6]制作带有ffmpeg的幻灯片:

