音视频八股文(2)--ffmpeg常见命令(1)
官方文档:
https://www.ffmpeg.org/ffplay-all.html
https://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命令-高级选项


更多参考
http://www.ffmpeg.org/ffplay.html
音视频八股文(2)--ffmpeg常见命令(1)的更多相关文章
- 音视频】5.ffmpeg命令分类与使用
GT其实平时也有一些处理音视频的个人或者亲人需求,熟练使用ffmpeg之后也不要借助图示化软件,一个命令基本可以搞定 G: 熟练使用ffmpeg命令!T :不要死记硬背,看一遍,自己找下规律,敲一遍, ...
- 音视频处理之FFmpeg封装格式20180510
一.FFMPEG的封装格式转换器(无编解码) 1.封装格式转换 所谓的封装格式转换,就是在AVI,FLV,MKV,MP4这些格式之间转换(对应.avi,.flv,.mkv,.mp4文件). 需要注意的 ...
- ffmpeg常见命令
一.安装 下载ffmpeg,解压之后配置环境变量即为安装 打开dos界面,进入目标文件夹例如:E:/ cd E:\BaiduYunDownload\ffmpeg\ffmpeg_simple ...
- Android 音视频深入 十一 FFmpeg和AudioTrack播放声音(附源码下载)
项目地址,求starhttps://github.com/979451341/AudioVideoStudyCodeTwo/tree/master/FFmpeg%E6%92%AD%E6%94%BE%E ...
- 音视频处理之FFmpeg+SDL视频播放器20180409
一.FFmpeg视频解码器 1.视频解码知识 1).纯净的视频解码流程 压缩编码数据->像素数据. 例如解码H.264,就是“H.264码流->YUV”. 2).一般的视频解码流程 视频码 ...
- 音视频处理之FFmpeg+SDL+MFC视频播放器20180411
一.FFmpeg+SDL+MFC视频播放器 1.MFC知识 1).创建MFC工程的方法 打开VC++ 文件->新建->项目->MFC应用程序 应用程序类型->基于对话框 取消勾 ...
- 音视频处理之FFmpeg程序的介绍与使用20180302
一.FFMPEG程序介绍与使用 主要介绍一下ffmpeg工程包含的三个exe的使用方法. 1. FFMPEG程序介绍 1.1.下载 ffmpeg的官方网站是:http://ffmpeg.org/ 下载 ...
- Android 音视频深入 十 FFmpeg给视频加特效(附源码下载)
项目地址,求starhttps://github.com/979451341/Audio-and-video-learning-materials/tree/master/FFmpeg(AVfilte ...
- Android 音视频深入 九 FFmpeg解码视频生成yuv文件(附源码下载)
项目地址,求star https://github.com/979451341/Audio-and-video-learning-materials/tree/master/FFmpeg(MP4%E8 ...
- 多媒体音视频处理及FFmpeg使用技巧总结
截图 ffmpeg -ss 00:02:06 -i input.mp4 -f image2 -y poster.jpg 连续截图 ffmpeg -y -i input.mp4 -vf "fp ...
随机推荐
- html、css、js 压缩或混淆方法
普通的压缩代码的方法包括在线工具和服务器打包处理,有一个共同的痛点是:压缩后的代码无法还原成原始的带有注释的源代码.正如大家所知,在源代码中调试Bug事半功倍.在线工具HCJCompress(ihon ...
- ssh基于主机名访问
登录一台服务器我们可以用ssh user@IP这种方式 还有一种快捷的方式,就是基于主机名访问,这需要先配置 /etc/hosts文件 假如我们又两台主机 192.168.75.131/165 分别为 ...
- [rk3568][buildroot] 移除RK3568 iodomain check
1. 问题背景 RK3568 基线代码默认会起一个服务监控RK3568 iodomain,该服务间隔性输出log信息: 由于该功能非必要,故选择移除该部分逻辑 2.解决方案 查看源码编译脚本,如下图所 ...
- Android笔记--发送彩信
发送彩信 界面还是那个界面,图片也实现了从相册进行选择图片,选择完成之后,就会回到界面里面的功能: 下面接着实现发送彩信的完整版: 具体实现如下: 界面代码不再展示,主要着重于后台的代码编写啦! 1. ...
- Tesseract5+OpenCV4(VS2017+win10)实现OCR识别
一.环境配置 较之前采用cppan进行编译的方式,vcpkg的方式已经发生了许多变化,带来的最大不同就是便捷. 对于在NuGet中能够找到的Vcpkg的export,真的实现了开箱即用 这样的话对于普 ...
- Redis事件机制(未写完)
Redis服务器是一个事件驱动程序,服务器需要处理以下两类事件: 文件事件:Redis通过套接字与客户端连接,文件事件是服务器对套接字操作的抽象. 时间事件:Redis服务器中的一些操作需要给定的时间 ...
- 人工智能机器学习底层原理剖析,人造神经元,您一定能看懂,通俗解释把AI“黑话”转化为“白话文”
按照固有思维方式,人们总以为人工智能是一个莫测高深的行业,这个行业的人都是高智商人群,无论是写文章还是和人讲话,总是讳莫如深,接着就是蹦出一些"高级"词汇,什么"神经网络 ...
- linux服务器qps查询,查看当前linux服务器的QPS
https://blog.csdn.net/weixin_42119281/article/details/116595205 QPS:每秒查询率(QPS,Queries-per-second)是对一 ...
- yaml-cpp YAML格式处理库的介绍和使用(面向业务编程-文件格式处理)
yaml-cpp YAML格式处理库的介绍和使用(面向业务编程-文件格式处理) YAML格式介绍 YAML的格式介绍,有关ini.json和xml或许很多人已经很了解了,但是关于YAML,还有许多人不 ...
- MySQL的group_concat()函数简单用法
将group by产生的同一个分组中的值连接起来,返回一个字符串结果. group_concat函数首先根据group by指定的列进行分组,将同一组的列显示出来,并且用分隔符分隔.由函数参数(字段名 ...