音视频八股文(2)--ffmpeg常见命令(1)

news2024/10/7 18:23:15

官方文档:
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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/425524.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《趣学数据结构》大纲

文章目录趣学数据结构一、数据结构入门(一)数据结构的基础知识1、基本概念(1)数据(2)数据元素(3)数据项(4)数据对象(5)数据结构2、逻辑…

利用在线Linux内核代码阅读分析网站linux kernel map分析CFS调度器代码调用链路

linux kernel map网址 https://makelinux.github.io/kernel/map/ 源码分析 点击Scheduler标签内的kernel/sched/ 左侧菜单,选择一个内核版本 Search Identifier搜索框输入要搜索的函数,回车执行搜索 结果列出了一处函数定义及两处引用 新窗口打开定义 …

14.Java面向对象----Object类

Object类 Java中Object 类是所有类的父类,也就是说 Java 的所有类都继承了 Object,子类可以使用 Object 的所有方法。 Object 类位于 java.lang 包中,编译时会自动导入,我们创建一个类时,如果没有明确继承一个父类&am…

【Spark】介绍 快速入门

目录 介绍 Spark and Hadoop Spark or Hadoop 核心模块 Spark Core Spark SQL Spark Streaming Spark MLlib Spark GraphX 快速上手 来源: 介绍 Spark 是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。 Spark and Hadoop HadoopHadoop 是由 java…

Linux 网络I/O模型

一、Linux下面的I/O模型 Linux下面一共有五种可以使用的I/O模型,如下: 1)阻塞式I/O 2)非阻塞式I/O 3)I/O多路复用(select与epoll) 4)信号驱动式I/O 5)异步I/O 下面重点介…

知识图谱-实体抽取

命名实体识别(Named Entity Recognition,简称NER)是信息抽取、问答系统、句法分析、机器翻译等应用领域的重要基础工具,在自然语言处理技术走向实用化的过程中占有重要地位。一般来说,命名实体识别的任务就是识别出待处…

【产品设计】电商后台系统设计--库存

电商后台产品,涉及众多模块,而以商品、订单、库存为核心模块,模块间存在大量交互。库存决定商品是否可售卖,下单是否能成功。 电商中的库存管理是为了保证前台商品的正常售卖,库存的管理和仓库密不可分,而仓…

Midjourney详细注册和使用教程

来源:Midjoureny详细注册使用教程【探索ChatGPT】 Midjourney,用户只需要输入一段图片的文字描述,即可生成精美的绘画,相信了解Midjourey的小伙伴已经对它强大之处而赞叹! 下面是用通俗易懂的步骤教会大家如何注册和…

【严蔚敏版数据结构】你分得清顺序栈和链栈吗

【严蔚敏版数据结构】顺序栈和链栈的剖析和对比一、顺序栈和链栈的存储结构二、顺序栈和链栈的初始化三、顺序栈和链栈的判断是否栈空四、顺序栈和链栈的入栈五、顺序栈和链栈的弹栈六、顺序栈和链栈的取栈顶元素一、顺序栈和链栈的存储结构 顺序栈的存储结构图如下&#xff1…

Windows 10系统,JDK安装与环境变量配置

引言 随着互联网的日益发展, 越来越多的小伙伴加入了程序员这个行列, 也有很多小伙伴正计划学习编程, 学习Java 那么对于新手来说, 第一件事就是下载安装Java开发工具包, 也就是JDK, 今天我们就来一起详细的说说怎么操作 JDK版本描述 学习环境中, 我们通常使用较新版本的JD…

支持PHP运行环境和系统防火墙配置管理,1Panel开源面板v1.1.0发布

2023年4月17日,现代化、开源的Linux服务器运维管理面板1Panel正式发布v1.1.0版本。 在这一版本中,1Panel新增支持PHP运行环境、系统防火墙配置管理以及同步本地应用等功能,并带来了40多项功能更新和问题修复,感谢各位社区用户的反…

回归预测 | MATLAB实现GA-LSTM遗传算法优化长短期记忆网络的数据多输入单输出回归预测

回归预测 | MATLAB实现GA-LSTM遗传算法优化长短期记忆网络的数据多输入单输出回归预测 目录回归预测 | MATLAB实现GA-LSTM遗传算法优化长短期记忆网络的数据多输入单输出回归预测效果一览基本介绍程序设计参考资料效果一览 基本介绍 MATLAB实现GA-LSTM遗传算法优化长短期记忆网…

nvm管理node

开发的时候node版本不兼容问题频频出现,就得安装多个版本node,nvm管理起来就很方便。 首先nvm是一个nodejs的版本管理工具。为了解决node.js各种版本存在不兼容现象可以通过它安装和切换不同版本的node.js。 打开CMD,输入命令 nvm &#xf…

密码基础知识——密码的概念与作用

密码基础知识——密码的概念与作用密码的概念与作用密码的概念密码的重要作用密码的功能密码应用技术框架密码应用中的安全性问题密码应用安全性评估的基本原理信息安全管理标准PDCA 管理循环信息安全风险评估定义信息安全风险评估的目的和用途信息安全风险评估的基本要素密码的…

Centos 7 安装系列(10):ElasticSearch 8.6.2

ElasticSearch 部署一、系统环境二、解压安装2.1 解压压缩包2.2 修改配置文件2.3 添加操作用户2.4 启动2.5 开放端口2.6 开机自启动配置2.7 设置用户名密码认证三、总结一、系统环境 操作系统:Centos 7 已配置环境:空 二、解压安装 2.1 解压压缩包 上…

基于ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、土地、土壤、农业、大气等领域的数据分析能力与项目科研水平

【原文链接】:基于ArcGIS、ENVI、InVEST、FRAGSTATS等多技术融合提升环境、生态、水文、土壤、农业、大气等领域的数据分析https://mp.weixin.qq.com/s?__bizMzU5NTkyMzcxNw&mid2247537467&idx4&sn10c4c12897282daf5320efae05caf3a4&chksmfe689551…

黑马2023JavaScript笔记1

一、js知识点 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-widt…

LoRA 指南之 LyCORIS 模型使用

LoRA 指南之 LyCORIS 模型使用 在C站看到这个模型&#xff0c;一眼就非常喜欢 在经历几番挣扎之后终于成功安装 接下来&#xff0c;我们一起开始安装使用吧&#xff01; 1、根据原作大佬的提示&#xff0c;需要安装两个插件 https://github.com/KohakuBlueleaf/a1111-sd-web…

蓝桥杯之我见

前言 关于蓝桥杯&#xff0c;应该有很多人不知道这是一个什么样的比赛。但是作为一名合格的程序员&#xff0c;就算之前没有参加过蓝桥杯的比赛&#xff0c;或者没听说过蓝桥杯&#xff0c;读完本篇文章再说不知道蓝桥杯&#xff0c;就有点不合适了吧&#xff1f;&#xff01;那…

网络作业6【计算机网络】

网络作业6【计算机网络】前言推荐网络作业6一. 单选题&#xff08;共11题&#xff0c;33分&#xff09;二. 多选题&#xff08;共2题&#xff0c;10分&#xff09;三. 判断题&#xff08;共1题&#xff0c;1分&#xff09;四. 阅读理解&#xff08;共1题&#xff0c;56分&#…