视频相关参数 - 转载【终末诗】

原文:终末诗 - 小刻也能看懂的视频压缩入门四万字超大型科普

最近在研究ffmpeg,看到了一个开源软件FFmpegFreeUI
然后顺着找到这个科普贴,记录了一些名词的解释,
部分咨询了AI,,,

基础名词

MB和Mb、Kb和KB的区别

大写 B = Byte(字节)

小写 b = bit(比特、位)

1 Byte = 8 bit

换算

Kb ↔ KB 和 Mb ↔ MB 不能简单用 ×1024 或 /1024 直接换算

而是要考虑 位(bit)和字节(Byte)的关系,以及计量体系(十进制/二进制)

  1. 网络单位 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)来源
  1. 计算机底层是二进制存储的,容量一般以 2 的幂 为单位最方便
  • 210 = 1024
  • 1 KB = 1024 B
  • 1 MB = 1024 KB
  1. 至于为什么底层用二进制

  2. 因为计算机的底层只有两个值

  3. 对、错 ↔ 1、0

  4. 想了解为什么区区二进制就能构建出这么丰富的计算机世界

  5. 可以去试试游戏:与门

  6. 我现在也卡关了

十进制(1000)来源
  1. 网络带宽、硬盘厂商标注容量、通信协议往往用 十进制
  • K = 1000,M = 1,000,000,G = 1,000,000,000
  • 这样标注更贴近国际单位制(SI):kilo = 10³,mega = 10⁶
  1. 例如:
  • 100 Mbps = 100 × 1,000,000 bit/s

分辨率

指x轴和y轴的像素数量

1920×1080:x轴有1920个像素,y轴有1080个像素

  1. 视频分辨率

  2. 视频本身所包含的像素数量,例如 1920×1080(1080p)、3840×2160(4K)

  3. 显示器分辨率

  4. 显示器物理能显示的像素数量,例如 1080p 显示器、2K 显示器、4K 显示器

  5. 像素密度(PPI)

  6. 屏幕单位面积的像素数量

同一视频,在不同显示器上的表现
  1. 视频分辨率 = 显示器分辨率

例如:1080p 视频在 1080p 显示器上

  1. 这是最理想的情况
  2. 每个视频像素对应一个屏幕像素
  3. 清晰度最大程度保留
  4. 视频分辨率 < 显示器分辨率(放大)

例如:1080p 视频在 4K 显示器上

  1. 视频像素比屏幕像素少,需要插值放大
  2. 插值方式(如双线性、Lanczos 等)会影响画质,但整体上会出现:
  • 画面变“软”
  • 边缘变模糊
  • 细节看不到
  1. 4K 显示器不会让1080p视频看起来更清晰,只会让其看起来“更干净但不更清晰
  2. 视频分辨率 > 显示器分辨率(缩小)

例如:4K 视频在 1080p 显示器上

  1. 必须缩小,信息量减少
  2. 虽然最终输出是 1080p,但通常比“原生1080p视频”要清晰些,原因是:
  • 缩小的画面经过抗锯齿,细节保留更佳
  • 噪点、伪影会减少
  1. 可以理解为“4K源 → 高质量压缩 → 1080p”
同一视频,观看画质的关键:PPI

即使分辨率相同,屏幕大小不同,清晰度差异很大。

举例:

  • 24英寸的1080p 显示器:PPI约92
  • 32英寸的1080p 显示器:PPI约69

同样内容,在 32 英寸上会显得模糊,因为像素被拉伸得更大

码率

单位时间(s)内传输的数据量(kb)

影响体积,与体积成正比:码率越大,体积越大;码率越小,体积越小

计算公式
  1. 码率=采样率 * 位深度 * 声道
  2. 文件大小 = 码率 * 时长
# 已知条件
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)

image

FPS - 帧率

一秒内闪过的画面数量

60FPS的意思就是1秒闪过60张图片

  1. 人眼视觉暂留效应,需要每秒播放至少24张画面才能形成连贯的感觉

ps:猫猫的动态视觉大概是人的5倍,即每秒播放至少100张画面才能形成连贯的感觉
2. 每张画面的播出时间就是1/24秒,这就是24帧视频
3. 简单的可以参考翻页动画,另外GIF动图也是这个原理

处理倍速

“倍速”是相对于视频帧率的“倍速”

计算公式
  1. 一个60帧的10min视频

  2. 20FPS的速度压缩,处理倍数:20/60=0.33x

  3. 压缩所需时间:10/0.33=30.3min

  4. 100FPS的速度压缩,处理倍数:100/60=1.67x

  5. 压缩所需时间:10/1.67=5.99min

通过FPS和处理倍速都能计算出差不多的压缩所需时间

刷新率

显示设备每秒钟更新屏幕内容的次数

image

轨道

MKV视频可以封入四种轨道

承载光影的视频轨、传递声浪的音频轨、封存文字的字幕轨、勾勒字形的字体轨(附件轨道)

也可以把「轨道」称为「流」,0与1交织成的数据流,比如视频流、音频流

增减音轨、字幕轨,而且不需要等待重新压缩,增减轨道的操作是可以瞬间完成的

视频可以拥有多种轨道:视频.h264 + 音频.mp3 + 字幕.srt

image

关于编码

容器格式

也可以说是封装格式,就是天天见到的视频文件拓展名:mp4、mkv、avi、rmvb

容器格式只是容器格式,不代表内部的编码格式是一样的

作用原理
  1. 多媒体容器的核心作用是封装不同类型的媒体数据(视频、音频、字幕、元数据等),并保持它们同步播放

  2. 实现原理

  3. 容器定义了一套文件结构:包括文件头、索引表、数据块(chunk/packet)等

  4. 视频、音频数据用编码格式压缩后存入容器

  5. 播放器通过读取容器中的索引表,按时间顺序解析音视频流,实现同步播放

  6. 容器可以支持多条流(多语言音轨、多字幕、章节信息等),并允许流的随机访问

容器格式 实现原理 优点 缺点 / 局限
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(索尼)等

作用原理
  1. 传感器捕捉光线
    相机传感器的每个像素记录光的强弱(亮度)和通过滤色片(如拜耳滤镜)的颜色信息
  2. 生成RAW数据
    传感器的数据直接写入RAW文件,未经过白平衡、色彩空间转换、锐化或压缩
  3. 后期处理
    RAW文件需要用专业软件(如Lightroom、Photoshop、Capture One)进行解码和处理,才能生成可直接查看的图片(如JPEG或TIFF)
优点
  1. 图像质量高:保留完整的动态范围和细节信息
  2. 后期灵活性大:可以调整曝光、白平衡、对比度和色彩,而不损失质量
  3. 无损存储:不会像JPEG那样进行有损压缩
缺点
  1. 文件大:比JPEG大很多,存储和传输成本高
  2. 需要后期处理:RAW文件本身不能直接用于社交媒体或打印,需要转换成其他格式
  3. 兼容性有限:不同相机厂商的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 **
作用原理
  1. 硬件编码器更像是“传话筒”
  2. 通过显卡API,将调用显卡上的编码单元
  3. 把压缩任务全部交给编码单元,自己不做复杂的编码算法
  4. 并不推荐使用硬编码

软编码 - CPU编码

软件编码

带有“lib”前缀的编码,都是用的CPU,即软件编码器,比如“libx264"

关于压缩参数

CRF - 恒定画质参数

此参数用于确定画质,优先使用此模式

CRF取值范围0~51,接近0好又大,接近51糊又小

此模式CPU专属,只能用CPU核心来压

**命令:ffmpeg -crf **

作用原理
  1. 把某一个”视觉质量”作为输出目标、
  2. 通过降低那些耗费码率但是又难以用肉眼察觉的帧(高速运动或者纹理丰富)的质量提升那些静态帧的码率来达到此目的
适用场景
  1. 适用于对视频质量有一定要求的场合
  2. CRF值可以简单理解为对视频质量期望的一个输出固定值
  3. 希望无论是在运动复杂场景下还是在静止简单情况下,都希望有一个稳定的主观视频质量可以选择该模式
  4. 该模式是视频质量优先模型
  5. 视频质量可以简单理解为视频的清晰度,像素的细腻程度和视频的流畅度
不确定要使用什么CRF值?
  1. 从默认值开始,并根据对输出的主观印象进行更改
  2. 如果质量没有足够好则使用较低的CRF
  3. 如果文件太大了则选择更高的CRF
  4. 更改±6会导致码率大小的一半/两倍左右的变化
  5. ±1会导致码率10%左右的变化。

image

  1. CRF调24可以兼顾画质和体积:既看不出来什么画质损失,体积又能小50%

  2. CRF24只是综合在24左右的区间变化

  3. 即使设定CRF24,各个场景也不是一直维持在“24”的数值的

  4. 比如重要的亮部,细节很多,给15保证画质

  5. 黑糊糊的暗部,看不清楚,给30、40节省码率

压缩对比图如下

image

CQP - 恒定量化参数

此参数用于确定编码时量化强度

QP取值范围一般为0~51,接近0画质好但文件大,接近51画质差但文件小

此模式CPU、GPU均可用

**命令:ffmpeg -qp **

作用原理
  1. 对每一帧使用固定的量化参数(QP),不考虑场景复杂度,让各场景的画质水平趋于一致
  2. 通过固定QP直接控制每帧画质,但码率会随画面复杂度波动
  3. 简单理解:画质恒定,文件大小不固定
适用场景
  1. 适用于对视频质量有较高要求的场合
  2. QP值可以简单理解为对每一帧画质的固定控制参数
  3. 希望无论在运动复杂场景还是静止简单场景下,都能保持相对稳定的画面质量
  4. 该模式是以画质优先为核心的编码方式
  5. 视频画质可以简单理解为视频的清晰度、像素细腻程度以及整体观感流畅度

preset - 速度预设

不同的编码器,有不同的预设参数

但是他们的意思是一样的:代表你愿意牺牲多少速度来让编码器寻求更高的压缩率,实现更小的体积

速度越快,压缩体积相对更大

  1. 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

图像是一张图,运动图像是连续的好多张图,压缩算法是把这么多的图合成视频

  1. 1992年诞生了MPEG-1

  2. 1999年诞生了MPEG-4,就是今天的mp4

  3. MPEG-4是一个大标准,由其下的27个小标准共同组成

  4. 即有part1~part27,27个部分,分别制定视频、音频、字幕、字体等各方面的标准

  5. MPEG-4 part2,制定了MPEG4编码格式,这是早期格式,已被H.264代替

  6. MPEG-4 part10,制定了H.264编码格式

  7. MPEG-4 part12,制定了MP4容器封装格式

VMAF - 视频画质的客观标准

视频画质的客观标准

由Netflix推出

评分范围0-100,分数越高,压缩后的视频和源视频的画质就越接近

  1. 可以用第三方软件“FFmetrics"”、“msu vqmt” 来获得VMAF分数
  2. VMAF分数在95以上可判定为肉眼看不出画质损失
测试分数区间
  1. 最高达不到上限的“100分”,即使当场复制一份源视频来对比,也多是98.5、99分
  2. 最低也不会到下限的“0分”,哪怕故意压成马赛克画面来对比也有30,40,50分
  3. 0.1分、1分一定是测试出错了,如帧数没对齐,拿A视频的第1000帧和B视频的第1001帧来对比
posted @ 2025-12-02 17:00  步尘  阅读(23)  评论(0)    收藏  举报