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

news2024/12/23 5:39:45

外界对于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 STR
  E 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     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf59.34.102
  Duration: 00:00:19.52, start: 0.000000, bitrate: 288 kb/s
  Stream #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/0
  Metadata:
    title           : 渔舟唱晚
    artist          : 中国十大古典名曲
    genre           : Other
    encoder         : Lavf59.27.100
  Duration: 00:03:37.91, start: 0.025057, bitrate: 128 kb/s
  Stream #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.coloradmin.cn/o/448712.html

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

相关文章

一篇文章介绍分布式事务

1、事务的基本概念 事务 事务指的就是一个操作单元,在这个操作单元中的所有操作最终要保持一致的行为,要么所有操作都成功,要么所有的操作都被撤销。简单地说,事务提供一种“要么什么都不做,要么做全套”机制。 本地…

【越早知道越好】的道理——能够大大提升效率的【快捷键】

文章目录 1️⃣虚拟桌面第一步:打开任务视图第二步:创建桌面第三步:桌面切换第四步:桌面删除 2️⃣窗口切换3️⃣桌面分屏如何分屏 前言🧑‍🎤:作为程序员👨‍💻&#xf…

scratch足球射门练习 中国电子学会图形化编程 少儿编程 scratch编程等级考试一级真题和答案解析2023年3月

目录 scratch足球射门练习 一、题目要求 1、准备工作 2、功能实现 二、案例分析

基于Java+SpringBoot+Vue前后端分离仓库管理系统设计实现

基于JavaSpringBootVue前后端分离仓库管理系统设计实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系方式…

RocketMQ 5.0 时代,6 张图带你理解 Proxy!

大家好,我是君哥。今天来聊一聊 RocketMQ 5.0 中的 Proxy。 RocketMQ 5.0 为了更好地拥抱云原生,引入了无状态的 Proxy 模块,新的架构图如下: 引入 Proxy 模块后,Proxy 承担了协议适配、权限管理、消息管理等计算功能…

JVM垃圾回收GC 详解(java1.8)

目录 垃圾判断算法(你是不是垃圾?) 引用计数法 可达性算法 对象的引用 强引用 软引用 弱引用 虚引用 对象的自我救赎 垃圾回收算法--分代 标记清除算法 复制算法 标记整理法 垃圾处理器 垃圾判断算法(你是不是垃圾&…

Anaconda+PyTorch环境搭建

AnacondaPyTorch环境搭建 环境Anaconda安装配置下载镜像 cuda和cudnncudacudnn pytorch参考文章 环境 win10 22hx nvidia driver 528.89 Anaconda安装 在清华镜像中选择合适的版本及对应系统 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/ 下载好之后一路next即可…

vscode笔记

vscode怎么中止运行 控制台—输出,结束运行: 控制台右击,然后点击Stop Code Run或者CtrlAltM快捷键 停止正在运行的Python脚本 在VS Code的右下角,选择正在运行的终端, 点右键,终止终端 VS code怎么终止…

简单的小型C++项目怎么用CMAKE进行管理

项目目录: 根目录下共有两个文件夹,分别为include、src,有两个文件,分别为CMakeLists.txt和main.cpp main函数 可以看出,include了func.h,且func.h的声明在include文件夹下,定义在src文件夹下的…

全网唯一!Matlab世界顶尖艺术品配色包Rmetbrewer

想要绘制一幅颜色搭配合理、好看又不花哨的论文插图,该如何操作呢? 正所谓求其上者得其中,求其中者得其下。 那么,向高手借鉴思路,无疑是一种不落下乘的好策略。 而在色彩搭配领域,像莫奈、梵高这些世界…

WPS表格数据出现绿色小三角,单引号,E+的原因说明和完美解决方案,终结版。

复盘问题的原因,了解原因的原因,预测事件的结果,推测结果产生的结果。 问题描述:好好的数据,复制进wps,左上角就会出现绿色三角。怎么去掉呢? 迷惑问题2:点击之后,绿色三…

代码优化- 前端优化

常量折叠 基本思想:在编译期间计算表达式的值(编译时静态计算) 例如:a 3 5 > a 8,if (true && false) ... > if (false) 好处是:语法树的节点数量减少了,意味着编译器要维护…

STM32—0.96寸OLED液晶显示

本文主要介绍基于STM32F103的0.96寸的OLED液晶显示,详细关于0.96寸OLED液晶屏幕的介绍可参考这篇博客:https://blog.csdn.net/u011816009/article/details/130119426 一、简介 OLED被称为有机激光二极管,也被称为有机激光显示,O…

学生宿舍管理系统【GUI/Swing+MySQL】(Java课设)

系统类型 Swing窗口类型Mysql数据库存储数据 使用范围 适合作为Java课设!!! 部署环境 jdk1.8Mysql8.0Idea或eclipsejdbc 运行效果 本系统源码地址:https://download.csdn.net/download/qq_50954361/87700423 更多系统资源库…

Sprinboot聚合项目归荑

1、前言 在创建springboot项目时,都会有一个Main方法。如果将Springboot项目设计成聚合项目时,我们是不是要把所有的子项目都按照Springboot的方式创建呢?如果是会出现什么问题,以及我们怎么解决呢? 如果我们使用maven…

ChatGPT原理详解+实操

言 ChatGPT已近火了快大半年了,从去年刚出来的时候小编就关注了一下,也具体的使用过,然后就惊为天人,再然后就没有然后了,因为小编那段时间沉迷于AIGC了。ChatGPT今年开年后更是火的一塌糊涂,无论是行业内…

chatgpt智能提效职场办公-ppt怎么加音乐背景

作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!😄 在 PowerPoint 中,您可以轻松地将音乐作为背景音乐添加到您的演示文稿中。下面是步骤: 打开您的 PowerPoint 演…

【大厂直通车】哔哩哔哩日常实习_测开面经

📑哈喽,大家好,我是小浪;本篇博客更新的是最新B站测开面经,本专栏非常适合目前准备找实习,或者准备冲秋招测试,测开方向的同学阅读订阅,持续更新各大厂真题面经,带你成为offer收割机!! 🧃对于订阅本专栏的同学们,博主在努力更新,只需要一杯奶茶钱,订阅本专栏,…

【命名空间】using namespace std是什么意思?

目录 一、前言二、命名空间2.1命名空间的定义2.2命名空间的成员调用2.2.1加命名空间名称及作用域限定符2.2.2使用using将命名空间中某个成员引入2.2.3使用using namespace 命名空间名称 引入 2.3命名空间的成员的优先级 三、using namespace std 一、前言 我们很多接触过C编程…

考了华为认证,如何找工作?能进哪些公司?有没有前景?

哪些人适合考华为?考了华为认证好不好找工作?这应该是困扰很多网工的问题。 俗话说,男怕入错行,女怕嫁错郎。如何选择一条适合自己的道路,提前做好职业规划,对个人职业发展至关重要。 下面就为大家整理了…