视频相关参数 - 转载【终末诗】
最近在研究ffmpeg,看到了一个开源软件FFmpegFreeUI
然后顺着找到这个科普贴,记录了一些名词的解释,
部分咨询了AI,,,
基础名词
MB和Mb、Kb和KB的区别
大写 B = Byte(字节)
小写 b = bit(比特、位)
1 Byte = 8 bit
换算
Kb ↔ KB 和 Mb ↔ MB 不能简单用 ×1024 或 /1024 直接换算
而是要考虑 位(bit)和字节(Byte)的关系,以及计量体系(十进制/二进制)
- 网络单位 vs 存储单位
-
Kb / Mb(小写 b)通常用于 网络带宽,使用十进制:
-
1 Kb = 1,000 bit
-
1 Mb = 1,000,000 bit
-
KB / MB(大写 B)通常用于 文件/存储,使用二进制:
-
1 KB = 1,024 B
-
1 MB = 1,024 KB = 1,048,576 B
# 1 MB 文件换算步骤
MB = 1
# 1 MB = 1024 KB
KB = MB * 1024
# 1 MB = 1024 * 1024 Byte
B = MB * 1024 * 1024
# Byte -> bit
bit = B * 8
# bit -> Kb(网络计量:1Kb = 1000 bit)
Kb = bit / 1000
# Kb -> Mb(网络计量:1Mb = 1000 Kb)
Mb = Kb / 1000
二进制(1024)来源
- 计算机底层是二进制存储的,容量一般以 2 的幂 为单位最方便
- 210 = 1024
- 1 KB = 1024 B
- 1 MB = 1024 KB
-
至于为什么底层用二进制
-
因为计算机的底层只有两个值
-
对、错 ↔ 1、0
-
想了解为什么区区二进制就能构建出这么丰富的计算机世界
-
可以去试试游戏:与门
-
我现在也卡关了
十进制(1000)来源
- 网络带宽、硬盘厂商标注容量、通信协议往往用 十进制:
- K = 1000,M = 1,000,000,G = 1,000,000,000
- 这样标注更贴近国际单位制(SI):kilo = 10³,mega = 10⁶
- 例如:
- 100 Mbps = 100 × 1,000,000 bit/s
分辨率
指x轴和y轴的像素数量
1920×1080:x轴有1920个像素,y轴有1080个像素
-
视频分辨率
-
视频本身所包含的像素数量,例如 1920×1080(1080p)、3840×2160(4K)
-
显示器分辨率
-
显示器物理能显示的像素数量,例如 1080p 显示器、2K 显示器、4K 显示器
-
像素密度(PPI)
-
屏幕单位面积的像素数量
同一视频,在不同显示器上的表现
- 视频分辨率 = 显示器分辨率
例如:1080p 视频在 1080p 显示器上
- 这是最理想的情况
- 每个视频像素对应一个屏幕像素
- 清晰度最大程度保留
- 视频分辨率 < 显示器分辨率(放大)
例如:1080p 视频在 4K 显示器上
- 视频像素比屏幕像素少,需要插值放大
- 插值方式(如双线性、Lanczos 等)会影响画质,但整体上会出现:
- 画面变“软”
- 边缘变模糊
- 细节看不到
- 4K 显示器不会让1080p视频看起来更清晰,只会让其看起来“更干净但不更清晰”
- 视频分辨率 > 显示器分辨率(缩小)
例如:4K 视频在 1080p 显示器上
- 必须缩小,信息量减少
- 虽然最终输出是 1080p,但通常比“原生1080p视频”要清晰些,原因是:
- 缩小的画面经过抗锯齿,细节保留更佳
- 噪点、伪影会减少
- 可以理解为“4K源 → 高质量压缩 → 1080p”
同一视频,观看画质的关键:PPI
即使分辨率相同,屏幕大小不同,清晰度差异很大。
举例:
- 24英寸的1080p 显示器:PPI约92
- 32英寸的1080p 显示器:PPI约69
同样内容,在 32 英寸上会显得模糊,因为像素被拉伸得更大
码率
单位时间(s)内传输的数据量(kb)
影响体积,与体积成正比:码率越大,体积越大;码率越小,体积越小
计算公式
- 码率=采样率 * 位深度 * 声道
- 文件大小 = 码率 * 时长
# 已知条件
kbps = 704 # 码率(Kbps)
seconds = 2 * 60 + 57 # 2 分 57 秒 = 177 秒
# 1) 总 Kb(千比特)
total_Kb = kbps * seconds
# total_Kb = 124608 Kb
# 2) Kb → bit
total_bit = total_Kb * 1000 # 1 Kb = 1000 bit
# total_bit = 124608000 bit
# 3) bit → Byte
total_Byte = total_bit / 8 # 1 Byte = 8 bit
# total_Byte = 15576000 Byte
# 4) Byte → KB(二进制)
total_KB = total_Byte / 1024 # 1 KB = 1024 B
# total_KB = 15210.9375 KB
# 5) KB → MB(二进制)
total_MB = total_KB / 1024 # 1 MB = 1024 KB
# total_MB = 14.85 MB
print(total_MB)

FPS - 帧率
一秒内闪过的画面数量
60FPS的意思就是1秒闪过60张图片
- 人眼视觉暂留效应,需要每秒播放至少24张画面才能形成连贯的感觉
ps:猫猫的动态视觉大概是人的5倍,即每秒播放至少100张画面才能形成连贯的感觉
2. 每张画面的播出时间就是1/24秒,这就是24帧视频
3. 简单的可以参考翻页动画,另外GIF动图也是这个原理
处理倍速
“倍速”是相对于视频帧率的“倍速”
计算公式
-
一个60帧的10min视频
-
20FPS的速度压缩,处理倍数:20/60=0.33x
-
压缩所需时间:10/0.33=30.3min
-
100FPS的速度压缩,处理倍数:100/60=1.67x
-
压缩所需时间:10/1.67=5.99min
通过FPS和处理倍速都能计算出差不多的压缩所需时间
刷新率
显示设备每秒钟更新屏幕内容的次数

轨道
MKV视频可以封入四种轨道
承载光影的视频轨、传递声浪的音频轨、封存文字的字幕轨、勾勒字形的字体轨(附件轨道)
也可以把「轨道」称为「流」,0与1交织成的数据流,比如视频流、音频流
增减音轨、字幕轨,而且不需要等待重新压缩,增减轨道的操作是可以瞬间完成的
视频可以拥有多种轨道:视频.h264 + 音频.mp3 + 字幕.srt

关于编码
容器格式
也可以说是封装格式,就是天天见到的视频文件拓展名:mp4、mkv、avi、rmvb
容器格式只是容器格式,不代表内部的编码格式是一样的
作用原理
-
多媒体容器的核心作用是封装不同类型的媒体数据(视频、音频、字幕、元数据等),并保持它们同步播放
-
实现原理
-
容器定义了一套文件结构:包括文件头、索引表、数据块(chunk/packet)等
-
视频、音频数据用编码格式压缩后存入容器
-
播放器通过读取容器中的索引表,按时间顺序解析音视频流,实现同步播放
-
容器可以支持多条流(多语言音轨、多字幕、章节信息等),并允许流的随机访问
| 容器格式 | 实现原理 | 优点 | 缺点 / 局限 |
|---|---|---|---|
| AVI | 分块结构(RIFF)存储音视频流 | 老牌格式,兼容性好;流式播放支持良好 | 不支持现代压缩算法(如H.265)优化;对多音轨和字幕支持差 |
| MP4 / MOV | 基于ISO/IEC 14496-12(ISO Base Media File)结构,使用盒子(box)存储流 | 支持H.264/H.265,支持多音轨、字幕、章节;适合网络流媒体 | 对非标准播放器兼容性可能略差;流式播放优化需要额外设置 |
| MKV (Matroska) | EBML(二进制XML)结构,可存储多种编码 | 开放源代码,支持几乎所有音视频格式、多音轨、多字幕;可扩展性强 | 文件结构复杂,部分老播放器不支持 |
| RM / RMVB | RealMedia专有格式,支持可变码率视频 | 早期网络视频占用小,适合低带宽 | 专有格式,兼容性差,现代播放器支持有限 |
RAW格式 - 数字底片
RAW格式是数码相机或扫描设备输出的一种原始图像数据文件,也叫“原片”或“数字底片”
常见的RAW文件扩展名有:.CR2(佳能)、.NEF(尼康)、.ARW(索尼)等
作用原理
- 传感器捕捉光线
相机传感器的每个像素记录光的强弱(亮度)和通过滤色片(如拜耳滤镜)的颜色信息 - 生成RAW数据
传感器的数据直接写入RAW文件,未经过白平衡、色彩空间转换、锐化或压缩 - 后期处理
RAW文件需要用专业软件(如Lightroom、Photoshop、Capture One)进行解码和处理,才能生成可直接查看的图片(如JPEG或TIFF)
优点
- 图像质量高:保留完整的动态范围和细节信息
- 后期灵活性大:可以调整曝光、白平衡、对比度和色彩,而不损失质量
- 无损存储:不会像JPEG那样进行有损压缩
缺点
- 文件大:比JPEG大很多,存储和传输成本高
- 需要后期处理:RAW文件本身不能直接用于社交媒体或打印,需要转换成其他格式
- 兼容性有限:不同相机厂商的RAW格式可能需要专用软件打开
“编码格式”和“编码器”是什么关系
编码格式
编码格式是一种规则或标准,用于对原始数据(如RAW图像或未压缩视频)进行组织、压缩和存储
它定义了如何对原始信息进行重排、量化和去冗余,从而减小文件体积,同时尽量保留对人眼或设备有用的信息
编码器
编码器是实际执行编码操作的工具或程序。它按照指定的编码格式对原始数据进行处理,生成压缩后的文件
编码器实现了编码格式的规则,但不同编码器在效率、压缩率、速度和画质上可能有所差异
| 编码格式 | 可用编码器 | 备注 |
|---|---|---|
| H264(AVC) | libx264、libx264rgb、h264_amf、h264_mf、h264_nvenc、h264_qsv等等 | libx264 也就是我们平时称呼的 x264,是最好的 |
| H265(HEVC) | libx265、hevc_amf、hevc_nvenc、hevc_qsv、hevc_vulkan等等 | libx265 也就是平时称呼的 x265,是最好的 |
| AV1 | libsvtav1、libaom-av1、librav1e、、av1_nvenc、av1_qsv、av1_amf、av1_vaapi | libsvtav1 也就是平时称呼的 svt-av1,或者叫 svtav1,是最好的 |
硬编码 - GPU编码
硬件编码
不带“lib"前缀的编码器,都是用的GPU,即硬件编码器,比如“h264_qsv"
硬件:特指显卡上的专用视频编解码单元
| 显卡类型 | 编码器 | 编码单元 | 压缩参数 |
|---|---|---|---|
| nvidia显卡 | nvenc系列 | nvenc | -cq ** |
| AMD显卡 | AMF系列 | VCN | -qp_i ** -qp_p ** |
| intel显卡 | QSV系列 | MFX / VDEnc / Media Engine | -global_quality ** |
作用原理
- 硬件编码器更像是“传话筒”
- 通过显卡API,将调用显卡上的编码单元
- 把压缩任务全部交给编码单元,自己不做复杂的编码算法
- 并不推荐使用硬编码
软编码 - CPU编码
软件编码
带有“lib”前缀的编码,都是用的CPU,即软件编码器,比如“libx264"
关于压缩参数
CRF - 恒定画质参数
此参数用于确定画质,优先使用此模式
CRF取值范围0~51,接近0好又大,接近51糊又小
此模式CPU专属,只能用CPU核心来压
**命令:ffmpeg -crf **
作用原理
- 把某一个”视觉质量”作为输出目标、
- 通过降低那些耗费码率但是又难以用肉眼察觉的帧(高速运动或者纹理丰富)的质量提升那些静态帧的码率来达到此目的
适用场景
- 适用于对视频质量有一定要求的场合
- CRF值可以简单理解为对视频质量期望的一个输出固定值
- 希望无论是在运动复杂场景下还是在静止简单情况下,都希望有一个稳定的主观视频质量可以选择该模式
- 该模式是视频质量优先模型
- 视频质量可以简单理解为视频的清晰度,像素的细腻程度和视频的流畅度
不确定要使用什么CRF值?
- 从默认值开始,并根据对输出的主观印象进行更改
- 如果质量没有足够好则使用较低的CRF
- 如果文件太大了则选择更高的CRF
- 更改±6会导致码率大小的一半/两倍左右的变化
- ±1会导致码率10%左右的变化。

-
CRF调24可以兼顾画质和体积:既看不出来什么画质损失,体积又能小50%
-
CRF24只是综合在24左右的区间变化
-
即使设定CRF24,各个场景也不是一直维持在“24”的数值的
-
比如重要的亮部,细节很多,给15保证画质
-
黑糊糊的暗部,看不清楚,给30、40节省码率
压缩对比图如下

CQP - 恒定量化参数
此参数用于确定编码时量化强度
QP取值范围一般为0~51,接近0画质好但文件大,接近51画质差但文件小
此模式CPU、GPU均可用
**命令:ffmpeg -qp **
作用原理
- 对每一帧使用固定的量化参数(QP),不考虑场景复杂度,让各场景的画质水平趋于一致
- 通过固定QP直接控制每帧画质,但码率会随画面复杂度波动
- 简单理解:画质恒定,文件大小不固定
适用场景
- 适用于对视频质量有较高要求的场合
- QP值可以简单理解为对每一帧画质的固定控制参数
- 希望无论在运动复杂场景还是静止简单场景下,都能保持相对稳定的画面质量
- 该模式是以画质优先为核心的编码方式
- 视频画质可以简单理解为视频的清晰度、像素细腻程度以及整体观感流畅度
preset - 速度预设
不同的编码器,有不同的预设参数
但是他们的意思是一样的:代表你愿意牺牲多少速度来让编码器寻求更高的压缩率,实现更小的体积
速度越快,压缩体积相对更大
- veryfast 是非常推荐的参数
同水平压缩参数一览
| 编码方式 | 编码器/显卡类型 | 参数 |
|---|---|---|
| 软编 | libx264 | -crf 24 |
| 软编 | libx265 | -crf 25 |
| 软编 | libsvtav1 | -crf 30~34 |
| 硬编 | h264_qsv | -global_quality 24 |
| 硬编 | hevc_qsv | -global_quality 23~24 |
| 硬编 | h264_nvenc | -cq 28~30 |
| 硬编 | hevc_nvenc | -cq 28~30 |
| 硬编 | av1_nvenc | -cq 34~36 |
MPEG - 运动图像压缩算法国际标准
全称:Moving Pictures Experts Group
图像是一张图,运动图像是连续的好多张图,压缩算法是把这么多的图合成视频
-
1992年诞生了MPEG-1
-
1999年诞生了MPEG-4,就是今天的mp4
-
MPEG-4是一个大标准,由其下的27个小标准共同组成
-
即有part1~part27,27个部分,分别制定视频、音频、字幕、字体等各方面的标准
-
MPEG-4 part2,制定了MPEG4编码格式,这是早期格式,已被H.264代替
-
MPEG-4 part10,制定了H.264编码格式
-
MPEG-4 part12,制定了MP4容器封装格式
VMAF - 视频画质的客观标准
视频画质的客观标准
由Netflix推出
评分范围0-100,分数越高,压缩后的视频和源视频的画质就越接近
- 可以用第三方软件“FFmetrics"”、“msu vqmt” 来获得VMAF分数
- VMAF分数在95以上可判定为肉眼看不出画质损失
测试分数区间
- 最高达不到上限的“100分”,即使当场复制一份源视频来对比,也多是98.5、99分
- 最低也不会到下限的“0分”,哪怕故意压成马赛克画面来对比也有30,40,50分
- 0.1分、1分一定是测试出错了,如帧数没对齐,拿A视频的第1000帧和B视频的第1001帧来对比

浙公网安备 33010602011771号