FFmpeg基础:音视频中的那些核心参数

article/2024/5/23 1:11:34

文章目录

    • 帧率
    • 修改帧率
    • 码率
    • 修改码率
    • 计算文件Size

码率和帧率是视频文件的关键指标参数,这些参数决定了一个视频文件的质量。如果我们知道了一个视频文件中所有流的码率我们就可以计算出这个视频文件的大小了。深刻理解码率和帧率概念对于使用ffmpeg进行音视频开发是很有帮助的,这里就详细介绍一下这几个概念。

帧率

帧率就是视频每秒播放的图片的帧数。帧率至少要达到15fps,人眼才能才能看到连贯的动作。15fps(frame per second)有时候也被称为15HZ,即1秒刷新15次。帧率主要分为两类,一种是交错的(interlaced 缩写为i),一种是步进的(progressive 缩写为p)。

交错帧率一般应用在电视节目上。NTSC(美国电视标准)使用60i的帧率,也就是每秒60个交错场(也就是30帧,两个交错场就是一帧)。PAL和SECAM标准使用50i的帧率,也就是每秒25帧。

步进帧率通常使用在电影节目上,常使用的值包括24p、25p、30p。最近一些高清的电影电视终端节目上30p已经无法满足需求,最新使用的帧率通常为50p和60p。

常见帧率的使用场景说明如下表所示:

帧率
(interlaced 缩写为i)
(progressive 缩写为p)
描述
24p/23.976p电影行业从1920年引入的标准帧率,在早期电影节目上使用的比较频繁。 NTSC采用该帧率的时候将帧率降到了23.976,PAL/SECAM采用该帧率的时候将帧率升到了25fps
25p使用50HZ电子频率国家中的电视电影节目的标准帧率,因为25p的帧率很容易转换成50i的帧率
30p数码相机和摄像机的帧率,30p的帧率很容易转换成60i用于电视直播
50iPAL和SECAM电视标准的标准帧率
60i/59.94NTSC标准中的标准帧率
50p/60p高清电视(HDTV)常用的帧率
48p新提出的帧率,还在测试当中
72p新提出的帧率 还在测试当中
120p超高清电视节目(UHDTV)使用的帧率

修改帧率

使用ffmpeg工具修改视频文件的帧率命令如下所示:

ffmpeg -i input -r fps output

除了使用ffmpeg工具之外我们还可以使用ffmpeg的滤镜来修改视频文件的帧率
ffmpeg的fps滤镜可以用来修改视频文件的帧率,调用格式如下:

fps=fps=number_of_frames

使用ffmpeg工具调用滤镜修改视频文件的帧率指令如下所示:

ffmpeg -i input.mp4 -vf fps=fps=25 output.mp4

码率

码率代表着音视频文件单位时间的字节数量,决定了音视频的质量。码率的类型主要分为三类ABR、CBR、VBR,对应的介绍如下所示:

类型缩写介绍
Average bit rateABR平均码率,对于动态码率的编码文件可以通过平均码率来确定视频文件的大小
Constant bit rateCBR固定码率,每秒处理的字节数固定。这个类型并不实用。因为动态场景肯定要比静态场景码率大,CBR常用于多媒体流传输
Variable bit rateVBR每秒处理的位数是可变的,复杂的场景或声音用更多数据编码,与CBR相比相同大小的VBR质量比CBR好,但需要耗费更多的CPU

修改码率

使用ffmpeg提供的工具修改码率的指令如下:

//将码率修改为1.5M
ffmpeg -i input.avi -b 1.5M output.mp4//只将视频流的码率修改为1.5M,音频修改为128k
ffmpe -i input.avi -b:v 1.5M -b:a 128k  output.mp4

计算文件Size

计算视频流Size的公式如下所示:

//码率*时间/8得出来的时间单位是bytes
video_size = video_bitrate * time_in_second / 8

计算音频流Size的公式如下所示:

//如果音频没有经过压缩计算公式如下
audio_size = sampling_rate * bit_depth * channels * time_in_seconds/8;//如果音频流经过压缩了计算公式如下
audio_size = bitrate * time_in_seconds / 8

下面以一个时长为10分钟,视频码率为1400k/s音频码率为128k的视频文件为例说明一下计算公式的使用方法

//1byte = 8bits
file_size = video_size + audio_size
file_size = (video_bitrate + audio_bitrate) * time_in_seconds / 8
file_size = (1500 kbit/s + 128 kbits/s) * 600 s
file_size = 1628 kbit/s * 600 s
file_size = 976800 kb = 976800000 b / 8 = 122100000 B / 1024 = 119238.28125 KB
file_size = 119238.28125 KB / 1024 = 116.443634033203125 MB ≈ 116.44 MB

实际的文件大小可能要比计算的文件大小大一些,因为其中包含了一些打包数据和视频文件的元数据。


http://www.ngui.cc/article/show-845541.html

相关文章

JAVA练习33

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、题目-有效的字母异位词 1.题目描述 2.思路与代码 2.1 思路 2.2 代码 总结 前言 提示:这里可以添加本文要记录的大概内容: 1月2…

最详细的华为VRP操作指南

第二章:华为VRP系统 通用路由平台VRP(Versatile Routing Platform)是华为公司数据通信产品的通用操作系统平台。它以IP业务为核心,采用组件化的体系结构,在实现丰富功能特性的同时,还提供了基于应用的可裁…

DW 2023年1月Free Excel 第八次打卡 Excel数据可视化

第八章Excel数据可视化 数据下载地址与参考链接:https://d9ty988ekq.feishu.cn/docx/Wdqld1mVroyTJmxicTTcrfXYnDd 1 条形图 案例1 打开data/chap8/8.1xlsx中的【案例1】,现在有湖北区2022/01/01的不同商品的销售额。 问题1:如何更加直观…

设计模式之简单工厂

现在有一个这样的需求:控制台输入俩个数,并输入运算符,计算并输出结果。上述需求乍一看,特别像一个小型的计算器,记得初学Java时,实现过。 实现一: 创建计算器类,控制台输入俩个数…

2、SPSS的基本知识

目录 一、SPSS软件的安装和启动 二、SPSS的基本操作环境 (1)数据编辑窗口(主程序窗口) (2)SPSS结果输出窗口 三、SPSS软件的退出 四、SPSS软件的三种基本使用方式 五、SPSS数据的结构和定义方法 1.…

人事管理系统

人才是单位的宝贵财富,而人事管理是人才资源的核心,因此快捷、高效的人事档案理系统成为单位的基本需求。 系统的主要目的是实现企业人事的信息化管理,主要业务是实现对员工信息的管理。 一、功能需求分析 人事管理系统主要是对人事档案管理…

(Java高级教程)第四章必备前端基础知识-第三节2:JavaScript数组、函数和对象

文章目录一:数组二:函数三:对象一:数组 数组:JavaScript中的数组和Java中的ArrayList有点相似,可以动态扩容,并且由于它是动态类型的语言,所以数组内的元素类型不要求一定是相同的 …

八字-十天干、十二地支、六十甲子

六十甲子是十天干与十二地支的组合,60为一周期,用年、月、日、时四个柱子撑起时间的大厦,所以年月日时也称四柱:甲子,乙丑,……,葵亥(一共60)。 十天干:甲乙丙丁卯己庚辛…

Shiro学习文档

Shiro Java安全框架 1.什么是权限管理 ​ 基本上涉及到用户参与的系统都要进行权限管理,权限管理属于系统安全的范畴,权限管理实现对用户访问系统的控制,按照安全规则或者安全策略控制用户可以访问而且只能访问自己被授权的资源。 权限管理…

实时即未来,大数据项目车联网之驾驶行程主任务定义【十六】

文章目录 1. 驾驶行程入库1.1 驾驶行程主任务定义1.2 自定义驾驶行程window function1.3 驾驶行程分析结果数据写入hbase1. 驾驶行程入库 驾驶行程数据筛选入库,为第六节的行程指标的分析数据 驾驶行程入库结果字段: vin :车架号 lastSoc:上次报文soc lastMileage:上次报文…