音视频八股文(2)--ffmpeg常见命令(1)
官方文档:
www.ffmpeg.org/ffplay-all.html
www.ffmpeg.org/ffmpeg-all.html
01-Windows FFMPEG 命令行环境搭建#
要在 Windows 系统上使用 FFmpeg 命令行,可以按照以下步骤搭建环境:
1. 访问 FFmpeg 官方网站,下载已经编译好的 Windows shared 库。
2. 将下载得到的包中的执行文件 ffmpeg.exe、ffplay.exe 和 ffprobe.exe 拷贝到 C:\Windows 目录下。这样,在命令行窗口中便可以直接访问这些可执行文件。
3. 将相应的动态库拷贝到 C:\Windows\SysWOW64 目录下,以确保 FFmpeg 可以正确地加载动态链接库。 (注:SysWOW64 是 Windows-on-Windows 64-bit 的简称,是 64 位系统用来运行 32 位程序的文件夹)
4. 打开命令行窗口,输入 ffmpeg -version 命令以检查 FFmpeg 环境是否搭建成功。
通过以上步骤,我们可以在 Windows 系统上成功搭建 FFmpeg 命令行环境,进行音视频处理等操作。
02-FFMPEG 如何查询命令帮助文档#
ffmpeg/ffplay/ffprobe 区别#
● ffmpeg:
Hyper fast Audio and Video encoder
超快音视频编码器(类似爱剪辑)。ffmpeg 是一个超快的音视频编码器,可以将音视频文件进行编码、转换、剪辑等操作。它支持多种格式的音视频文件,并且拥有强大的编码能力,可以对音视频进行高效的压缩。
● ffplay:
Simple media player
简单媒体播放器。ffplay 是一个简单的媒体播放器,可以播放多种格式的音视频文件。它支持实时播放、静态显示、录制等多种功能,并且可以通过命令行参数来控制播放器的行为。
● ffprobe:
Simple multimedia streams analyzer
简单多媒体流分析器。ffprobe 是一个简单的多媒体流分析器,可以获取音视频文件的元数据信息以及编解码器相关信息。它可以输出多种格式的信息,包括 JSON、XML 和 CSV 等格式。ffprobe 还可以通过命令行参数来控制输出的详细程度和格式。
以上三个工具都是 FFmpeg 框架中的一部分,但它们的功能和用途不同。ffmpeg 主要是用于音视频编码和转换,ffplay 则是用于媒体播放,而 ffprobe 则是用于多媒体流分析。
ffmpeg 命令查看帮助文档#
通过 FFmpeg 命令行可以进行音视频处理等操作,但对于不熟悉命令行的用户来说,常常需要查看帮助文档以了解命令的使用方法和参数选项。
以下是查看帮助文档的几种方式:
1. 基本信息:输入 ffmpeg -h 命令即可查看基本的帮助信息。这些信息包括常用的命令、选项和参数等。
2. 高级信息:输入 ffmpeg -h long 命令可以查看更加详细的帮助信息,包括各种输入输出格式、编码器、滤镜等的详细说明。
3. 所有信息:输入 ffmpeg -h full 命令可以查看所有的帮助信息,包括命令、选项、参数以及各种输入输出格式、编码器、滤镜等的详细说明。
4. 输出到文件:如果希望将帮助文档保存到文件中,可以输入 ffmpeg -h full > ffmpeg_h_full.log 命令,将输出结果重定向到一个文件中。然后再打开该文件即可查看完整的帮助文档。
无论采用哪种方式,都可以通过 usage: 行了解 FFmpeg 命令的基本使用方法。
usage:
ffmpeg [options] [[infile options] -i infile]… {[outfile options] outfile}…
ffplay 命令查看帮助文档#
所有信息:ffplay -h
usage:
ffplay [options] input_file
ffprobe 命令查看帮助文档#
所有信息:ffprobe -h
usage:
ffprobe [OPTIONS] [INPUT_FILE]
ffmpeg/ffplay/ffprobe 部分参数通用,部分参数不通用,在使用时需要注意。
03-ffmpeg 音视频处理流程#
先看两条命令
ffmpeg -i test_1920x1080.mp4 -acodeccopy -vcodeclibx264 -s 1280x720test_1280x720.flv
ffmpeg -i test_1920x1080.mp4 -acodeccopy -vcodeclibx265 -s1280x720test_1280x720.mkv
该命令的具体含义如下:
1.-i 选项:指定输入文件名。
2.-acodeccopy 选项:表示复制音频流而不进行重新编码。
3.-vcodeclibx264 选项:表示使用 libx264 编码器进行视频编码。
4.-vcodeclibx265 选项:表示使用 libx265 编码器进行视频编码。
5.-s 选项:指定输出视频的分辨率大小。
6.test_1280x720.flv 和 test_1280x720.mkv:指定输出文件名和格式。
在执行转码过程中,FFmpeg 会按照以下流程进行音视频处理:
1. 解封装:将输入文件 (test_1920x1080.mp4) 解封装为音频流和视频流。
2. 解码:分别对音频流和视频流进行解码,得到原始的音频帧和视频帧数据。
3. 编码:使用指定的编码器 (libx264 或 libx265) 对视频帧进行重新编码,以达到需求的分辨率和压缩质量要求。音频直接复制。
4. 封装:将编码后的音频流和视频流重新封装为 FLV 或 MKV 等格式,并写入输出文件 (test_1280x720.flv 或 test_1280x720.mkv) 中。
总之,FFmpeg 的音视频处理流程包括解封装、解码、编码和封装等多个步骤,其中编码步骤也是性能消耗最大的环节。业务场景下需要根据实际情况选择合适的音视频编码格式,以达到最佳的音视频品质和转码效果。
04-ffmpeg 命令分类查询#
ffmpeg 命令分类查询#
命令参数 | 内容 |
---|---|
version | 显示版本 |
-buildconf | 显示编译配置 |
-formats | 显示可用格式 (muxers+demuxers) |
-muxers | 显示可用复用器 |
-demuxers | 显示可用解复用器 |
-devices | 显示可用音视频设备 |
-codecs | 显示可用编解码器 (decoders+encoders) |
-decoders | 显示可用解码器 |
-encoders | 显示可用编码器 |
-bsfs | 显示可用比特流 filter |
-protocols | 显示可用的协议 |
-filters | 显示可用的过滤器 |
-pix_fmts | 显示可用的像素格式 |
-layouts | 显示标准声道名称 |
-sample_fmts | 显示可用的音频采样格式 |
-colors | 显示可用的颜色名称 |
## ffmpeg -version 显示版本 |
要查看 FFmpeg 的版本信息,可以在命令行窗口中输入 ffmpeg -version 命令。执行命令后,程序将输出当前安装的 FFmpeg 的版本信息。
通过查看版本信息,可以了解当前安装的 FFmpeg 版本号、编译日期、编译器类型和支持的音视频格式等详细信息,从而确定当前的 FFmpeg 环境是否搭建成功或者是否需要进行升级等操作。
ffmpeg -buildconf 显示编译配置#
要查看 FFmpeg 的编译配置信息,可以在命令行窗口中输入 ffmpeg -buildconf 命令。执行命令后,程序将输出当前安装的 FFmpeg 的编译配置信息。
通过查看编译配置信息,可以了解当前安装的 FFmpeg 的编译选项、支持的外部库和平台相关信息等详细信息。
ffmpeg -formats 显示可用格式 (muxers+demuxers)#
要查看 FFmpeg 支持的音视频格式,可以在命令行窗口中输入 ffmpeg -formats 命令。执行命令后,程序将输出当前安装的 FFmpeg 支持的音视频格式,包括可用的 muxers 和 demuxers。
ffmpeg -muxers 显示可用复用器#
要查看 FFmpeg 支持的复用器(也称为 muxers),可以在命令行窗口中输入 ffmpeg -muxers 命令。执行命令后,程序将输出当前安装的 FFmpeg 支持的复用器列表。
通过查看复用器列表,可以了解当前安装的 FFmpeg 支持哪些复用器以及它们的用途和参数选项等详细信息。同时,也可以根据需要选择合适的复用器进行封装操作。
ffmpeg -demuxers 显示可用解复用器#
要查看 FFmpeg 支持的解复用器(也称为 demuxers),可以在命令行窗口中输入 ffmpeg -demuxers 命令。执行命令后,程序将输出当前安装的 FFmpeg 支持的解复用器列表。
通过查看解复用器列表,可以了解当前安装的 FFmpeg 支持哪些解复用器以及它们的用途和参数选项等详细信息。同时,也可以根据需要选择合适的解复用器进行分离操作。
ffmpeg -devices 显示可用音视频设备#
要查看 FFmpeg 支持的音视频设备,可以在命令行窗口中输入 ffmpeg -devices 命令。执行命令后,程序将输出当前安装的 FFmpeg 支持的音视频设备列表。
通过查看音视频设备列表,可以了解当前安装的 FFmpeg 支持哪些音视频设备以及它们的用途和参数选项等详细信息。同时,也可以根据需要选择合适的音视频设备进行音视频捕获和播放操作,以达到最佳的音视频品质和用户体验。
ffmpeg -codecs 显示可用编解码器 (decoders+encoders)#
要查看 FFmpeg 支持的编解码器(包括解码器和编码器),可以在命令行窗口中输入 ffmpeg -codecs 命令。执行命令后,程序将输出当前安装的 FFmpeg 支持的编解码器列表。
通过查看编解码器列表,可以了解当前安装的 FFmpeg 支持哪些音视频编解码器以及它们的用途和参数选项等详细信息。同时,也可以根据需要选择合适的编解码器进行音视频转换和处理操作,以达到最佳的音视频品质和转码效果。
ffmpeg -decoders 显示可用解码器#
要查看 FFmpeg 支持的解码器,可以在命令行窗口中输入 ffmpeg -decoders 命令。执行命令后,程序将输出当前安装的 FFmpeg 支持的解码器列表。
通过查看解码器列表,可以了解当前安装的 FFmpeg 支持哪些音视频解码器以及它们的用途和参数选项等详细信息。同时,也可以根据需要选择合适的解码器进行音视频解码操作。
ffmpeg -encoders 显示可用编码器#
要查看 FFmpeg 支持的编码器,可以在命令行窗口中输入 ffmpeg -encoders 命令。执行命令后,程序将输出当前安装的 FFmpeg 支持的编码器列表。
通过查看编码器列表,可以了解当前安装的 FFmpeg 支持哪些音视频编码器以及它们的用途和参数选项等详细信息。同时,也可以根据需要选择合适的编码器进行音视频编码操作。
ffmpeg -bsfs 显示可用比特流 filter#
要查看 FFmpeg 支持的比特流 filter(也称为 bsfs),可以在命令行窗口中输入 ffmpeg -bsfs 命令。执行命令后,程序将输出当前安装的 FFmpeg 支持的比特流 filter 列表。
通过查看比特流 filter 列表,可以了解当前安装的 FFmpeg 支持哪些比特流 filter 以及它们的用途和参数选项等详细信息。同时,也可以根据需要选择合适的比特流 filter 进行音视频转换和处理操作。
ffmpeg -protocols 显示可用的协议#
要查看 FFmpeg 支持的协议,可以在命令行窗口中输入 ffmpeg -protocols 命令。执行命令后,程序将输出当前安装的 FFmpeg 支持的协议列表。
通过查看协议列表,可以了解当前安装的 FFmpeg 支持哪些协议以及它们的用途和参数选项等详细信息。同时,也可以根据需要选择合适的协议进行音视频传输和处理操作。
ffmpeg -filters 显示可用的过滤器#
要查看 FFmpeg 支持的过滤器,可以在命令行窗口中输入 ffmpeg -filters 命令。执行命令后,程序将输出当前安装的 FFmpeg 支持的过滤器列表。
通过查看过滤器列表,可以了解当前安装的 FFmpeg 支持哪些音视频过滤器以及它们的用途和参数选项等详细信息。同时,也可以根据需要选择合适的过滤器进行音视频转换和处理操作。
ffmpeg -pix_fmts 显示可用的像素格式#
要查看 FFmpeg 支持的像素格式,可以在命令行窗口中输入 ffmpeg -pix_fmts 命令。执行命令后,程序将输出当前安装的 FFmpeg 支持的像素格式列表。
通过查看像素格式列表,可以了解当前安装的 FFmpeg 支持哪些像素格式以及它们的用途和参数选项等详细信息。同时,也可以根据需要选择合适的像素格式进行音视频转换和处理操作。
ffmpeg -layouts 显示标准声道名称#
要查看 FFmpeg 支持的标准声道名称,可以在命令行窗口中输入 ffmpeg -layouts 命令。执行命令后,程序将输出当前安装的 FFmpeg 支持的标准声道名称列表。
通过查看标准声道名称列表,可以了解当前安装的 FFmpeg 支持哪些常见的声道配置以及它们的命名规则和参数选项等详细信息。同时,也可以根据需要选择合适的声道配置进行音频处理和转码操作。
ffmpeg -sample_fmts 显示可用的音频采样格式#
要查看 FFmpeg 支持的音频采样格式,可以在命令行窗口中输入 ffmpeg -sample_fmts 命令。执行命令后,程序将输出当前安装的 FFmpeg 支持的音频采样格式列表。
通过查看音频采样格式列表,可以了解当前安装的 FFmpeg 支持哪些常见的音频采样格式以及它们的命名规则和参数选项等详细信息。同时,也可以根据需要选择合适的音频采样格式进行音频处理和转码操作。
为什么在 ffplay 播放 PCM 的时候需要 - f f32le 这种模式而不是 - f flt 呢?比如
ffplay -ar 48000 -ac 2 -f f32le believe.pcm
是因为此时实际 - f 对应的是 decoder,这里解 PCM 则对应 pcmdec.c (ffmpeg-4.2.1\libavformat) 的 PCM 解码器,这里的 PCM decoder 实际只是按照大小端、浮点还是整数、占用的 bit 数等参数来做解析。比如 - f f32le 对应为:
PCMDEF(f32le, “PCM 32-bit floating-point little-endian”, NULL, AV_CODEC_ID_PCM_F32LE)
AV_CODEC_ID_PCM_F32LE 属于 CODEC ID。
在使用 ffplay 播放 PCM 音频时,需要指定正确的 - f 参数来对音频进行解码。例如,命令 ffplay -ar 48000 -ac 2 -f f32le believe.pcm 中的 - f f32le 表示将信号解码为 32 位浮点格式的小端字节序。
这是因为 PCM 音频并不包含文件头等元数据信息,在没有其他信息的情况下,FFmpeg 无法正确地猜测采样率、声道数和采样格式等参数,需要手动指定。同时,实际所指定的 - f 参数对应的是解码器,即在此处使用的 PCM 解码器(pcmdec.c),而该解码器只根据指定的参数解析原始音频数据。
因此,如果音频数据的采样格式与所指定的参数不匹配,将会导致解码失败或者产生噪声等问题。在选择参数时,需要了解音频数据的具体采样格式和编码方式,并根据需要选择合适的解码器和参数选项。
ffmpeg -colors 显示可用的颜色名称#
要查看 FFmpeg 支持的颜色名称,可以在命令行窗口中输入 ffmpeg -colors 命令。执行命令后,程序将输出当前安装的 FFmpeg 支持的颜色名称列表。
通过查看颜色名称列表,可以了解当前安装的 FFmpeg 支持哪些常用的颜色名称以及它们的命名规则和参数选项等详细信息。同时,也可以根据需要选择合适的颜色进行视频处理和转码操作,以达到最佳的视频品质和效果。
查看具体分类所支持的参数#
语法:ffmepg -h type=name
比如:
● ffmpeg -h muxer=flv
● ffmpeg -h filter=atempo (atempo 调整音频播放速率)
● ffmpeg -h encoder=libx264
通过查看特定分类下的参数列表,可以了解当前安装的 FFmpeg 支持哪些常见的参数选项以及它们的用途和使用方法等详细信息。同时,也可以根据需要选择合适的参数进行音视频处理和转码操作。
05-ffplay 播放控制#
06-ffplay 命令选项#
ffplay 命令 - 主要选项#
ffplay 命令 - 高级选项#
更多参考#
本作品采用《CC 协议》,转载必须注明作者和本文链接