FFmpeg开发笔记(三)FFmpeg的可执行程序介绍

news/2024/11/19 6:39:57/

外界对于FFmpeg主要有两种使用途径,一种是在命令行运行FFmpeg的可执行程序,该方式适合没什么特殊要求的普通场景;另一种是通过代码调用FFmpeg的动态链接库,由于开发者可以在C代码中编排个性化的逻辑,因此该方式适合厂商专用的特制场景。
开源的FFmpeg框架提供了三个可执行程序,分别是ffmpeg、ffplay和ffprobe,下面分别展开详细介绍。

1、ffmpeg程序

ffmpeg程序主要有两个用途,一个是查询FFmpeg的支持信息,另一个是处理音视频的转换操作。关于音视频的转换命令,会在后面的文章中逐一介绍,这里只说明该程序能够查到哪些FFmpeg支持信息。前面在搭建FFmpeg开发环境的时候,提到可以用下面命令查看FFmpeg的版本信息:

ffmpeg -version

除此之外,ffmpeg程序还能查询它所支持的文件格式,比如下面命令可以查看FFmpeg支持的文件格式:

ffmpeg -formats

执行上面命令,控制台回显长长的一串文件格式支持列表,列表开头是下面这样子的。

File formats:D. = Demuxing supported.E = Muxing supported--D  3dostr          3DO STRE 3g2             3GP2 (3GPP2 file format)E 3gp             3GP (3GPP file format)D  4xm             4X Technologies

可见FFmpeg支持的文件格式分为两种类型,一种被标记为D,表示支持该类型文件的解析;另一种被标记为E,表示支持该类型文件的封装。继续下拉这一长串文件格式列表,既能找到古老的vcd格式,也能找到风靡一时的rm和flv格式,还能找到mp3和mp4等常见格式,看来FFmpeg真的将音视频格式一网打尽了。
ffmpeg程序能够查看的更多信息见下。由于相关概念比较专业,因此这里不再一一展开,等到后续有涉及时再来讲解。

ffmpeg -codecs:查看支持的编解码器
ffmpeg -formats:查看支持的文件格式
ffmpeg -help:查看命令行的帮助信息
ffmpeg -protocols:查看支持的通讯协议
ffmpeg -version:查看FFmpeg的版本信息

2、ffplay程序

ffplay程序相当于一个播放器,主要用来播放音视频文件。在播放音频时,ffplay不仅会让扬声器放出声音,还会在屏幕展示该音频的波形画面。在播放视频时,ffplay会在屏幕展示连续的视频画面,就像看电影看电视那样。如果视频文件携带有音频数据,那么ffplay会让扬声器同时播放声音。
以播放视频为例,下面命令使用ffplay程序播放名叫fuzhous.mp4的视频文件。

ffplay fuzhous.mp4

执行上面命令,控制台一边弹出视频播放器窗口如下图所示,一边回显以下的输入文件信息。

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'fuzhous.mp4':Metadata:major_brand     : isomminor_version   : 512compatible_brands: isomiso2avc1mp41encoder         : Lavf59.34.102Duration: 00:00:19.52, start: 0.000000, bitrate: 288 kb/sStream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(progressive), 480x270 [SAR 1:1 DAR 16:9], 285 kb/s, 25 fps, 25 tbr, 12800 tbn (default)

根据以上的文件信息,可知该视频持续时间为19.52秒,视频编码器采用h264,视频分辨率为480x270,fps帧率为每秒25帧。
再来看看播放音频,下面命令表示使用ffplay程序播放名叫ships.mp3的音频文件。

ffplay ships.mp3

执行上面命令,控制台一边弹出音频波形窗口如下图所示,一边回显以下的输入文件信息。

 

Input #0, mp3, from 'ships.mp3':   0KB vq=    0KB sq=    0B f=0/0Metadata:title           : 渔舟唱晚artist          : 中国十大古典名曲genre           : Otherencoder         : Lavf59.27.100Duration: 00:03:37.91, start: 0.025057, bitrate: 128 kb/sStream #0:0: Audio: mp3, 44100 Hz, stereo, fltp, 128 kb/s

根据以上的文件信息,可知晓该音频的标题和演唱者,以及音频的持续时间为3分37.91秒,音频编码器采用mp3,采样频率为44100赫兹。
ffplay程序的更多命令行参数可通过下面命令查看,这里不再一一展开了。

ffplay -help

3、ffprobe程序

ffprobe程序是一个多媒体分析工具,它既能分析音视频的文件参数、容器参数等信息,也能分析音视频文件中每个数据包的大小、类型、编解码器等信息。
以查看文件参数为例,下面命令表示使用ffprobe查看视频文件2018.mp4的格式信息。

ffprobe -show_format 2018.mp4

执行上面命令,控制台回显如下的文件格式信息,斜杆后面是笔者添加的说明注释。

[FORMAT]
filename=2018.mp4    // 文件名
nb_streams=2    // 流的数量。为2表示包含视频流和音频流
nb_programs=0
format_name=mov,mp4,m4a,3gp,3g2,mj2    // 格式名称
format_long_name=QuickTime / MOV    // 完整的格式名称
start_time=0.000000    // 开始时间,单位秒
duration=253.332993    // 结束时间,单位秒
size=42853286    // 文件大小,单位字节
bit_rate=1353263    // 比特率,即每秒传输的比特数量(1个字节有8个比特)
probe_score=100
[/FORMAT]

因为ffprobe程序返回的文件信息直接显示在控制台,密密麻麻令人看得眼花缭乱,所以实际上很少使用ffprobe分析音视频,而是采用第三方专业的桌面软件加以分析,后面讲到相关格式时再介绍这些软件。
 


http://www.ppmy.cn/news/51027.html

相关文章

WPF教程(九)--数据绑定(2)--绑定模式

一、绑定模式 绑定模式以及模式的使用效果。 示例如下是根据ListBox中的选中项,去改变TextBlock的背景色。将 TextBlock 的背景色绑定到在 ListBox 中选择的颜色。在下面的代码中针对TextBlock的 Background 属性使用绑定语法绑定从 ListBox 中选择的值。代码如下。…

Java中的Unsafe类详解

Java中的Unsafe类详解 什么是Unsafe类 在Java中,Unsafe类是一个位于sun.misc包下的类,提供了一些比较底层的方法,能够访问一些更加接近操作系统底层的资源,例如内存资源、CPU指令等等。通过这些方法,我们能够完成一些…

诊断CAPL自动化(1)—— CANoe自带的诊断工程分析

🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe,博客目录大全,点击跳转👉 📘前言 🍅 学习CANoe,官方的实例工程就是最好的学习模板,对于初学者,…

lab5:深入理解进程切换

Linux中的进程切换由context_switch函数完成,该函数位于源代码目录的kernel/sched/core.c 中,代码如下: context_switch函数 /** context_switch - switch to the new MM and the new threads register state.*/ static __always_inline st…

Linux网络编程TCP粘包问题解析及解决方法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、一次发送多个数据实验二、导致问题的原因三、解决方案之一:延时发送四、知识点补充发送缓冲区和接收缓冲区五、解决方法总结 前言 本篇文章将引…

Qt Quick - Container

Qt Quick - Container使用总结 一、概述二、使用容器三、管理当前索引四、容器实现 一、概述 Container 提供容器通用功能的抽象基类。Container是类容器用户界面控件的基本类型,允许动态插入和删除Item。DialogButtonBox, MenuBar, SwipeView, 和 TabBar 都是继承…

【移动端网页布局】移动端网页布局基础概念 ② ( 视口 | 布局视口 | 视觉视口 | 理想视口 )

文章目录 一、视口1、布局视口 ( 网页大小 | 网页大小 > 设备大小 )2、视觉视口 ( 设备大小 | 网页大小 > 设备大小 )3、理想视口 ( 网页大小 设备大小 ) 一、视口 浏览器 显示 网页页面内容 的 屏幕区域 被称为 " 视口 " ; 视口分为以下几个大类 : 布局视口…

FPGA基于XDMA实现PCIE X8视频采集HDMI输出 提供工程源码和QT上位机程序和技术支持

目录 1、前言2、我已有的PCIE方案3、PCIE理论4、总体设计思路和方案5、vivado工程详解6、驱动安装7、QT上位机软件8、上板调试验证9、福利:工程代码的获取 1、前言 PCIE(PCI Express)采用了目前业内流行的点对点串行连接,比起 PC…