Back
Featured image of post FFmpeg 入门与实践 002

FFmpeg 入门与实践 002

FFmpeg 是极其易用的多媒体处理工具。本文继续介绍其用法及相关概念。

FFmpeg 系列文章导航页

上一篇 FFmpeg 入门与实践 001

上回,主要介绍了 FFmpeg 极其基本的用法,以及一些基本概念。这回继续深入,详解视频参数组成。

基本概念

分辨率

众所周知,屏幕由无数像素组成。像素的单位是 \(\text{px(pixel)}\)。基本而言,像素越多,清晰度越高。分辨率便是用来描述像素的。通常,分辨率被表示为 \(\text{W} \times \text{H}\),如 \(1920 \times 1080\) ,当然也可以是 \(\text{W} : \text{H}\)。其乘积的结果,即为总像素点数。

DPI / PPI

  • DPI 为每英尺点数(Dots Per Inch)的缩写

  • PPI 为每英尺像素(Pixel Per Inch)的缩写

两者概念上很相同,然而 DPI 为一个抽象概念,并不规定 点(Dots) 的具体表现是什么。换句话说,PPI 是 DPI 的子集,对点的定义是像素。两者在日常用语上可以是相同的。

PPI 之计算如下:

\[ \text{PPI} = \frac{\sqrt{w^2_p + h^2_p}}{d_i}=\frac{d_p}{d_i} \]

其中,\(w_p\) 为横向分辨率,\(h_p\) 为纵向分辨率,\(d_p\) 为对角线分辨率,\(d_i\) 为屏幕对角线长度(英尺)。

如今高分辨率屏幕快速普及,高 PPI 会越来越多,所以,不要将 \(96\,\text{PPI}\) 作为标准了,它快被淘汰了

宽高比

宽高比(Aspect Ratio),又或者说长宽比。它表示画面矩形的比例。分辨率的比值就是 显示宽高比DAR, Display Aspect Ratio)。

然而,宽高比不仅仅有显示宽高比。更有 像素宽高比PAR, Pixel Aspect Ratio)。也就是说,像素未必都是 1:1 的正方形,可能是诸如 1:2, 2:1 的长方形

\[ \text{PAR} = \text{DAR} \times \text{SAR} \]

其中,SAR 为 储存像素比(Stroage Aspect Ratio)。

DAR 和 SAR 的主要区别是,DAR 由解码器处理,SAR 由编码器处理。

帧率

帧率(Frame Rate),其常用单位为 FPSFrame Per Second),每秒帧数。即,每秒放多少帧图像。很大程度上决定了画面的流畅度。

一个简单的对比(最终播放表现取决于你的显示器):

如果无法播放 点击这里(需要 HEVC 支持)

逐行扫描/隔行扫描

逐行扫描(Progressive Scan),即,每一帧一次性扫描整个画面。

隔行扫描(Interlaced Scan),又称交错,即,一张画面分成两张显示,即奇数场偶数场,可以先扫描奇数场或者偶数场,也就是每一帧更新半张。

原图 奇数场 偶数场 对比
慢放的隔行扫描

Wikimedia 作者 Grayshi 使用需遵循 CC BY SA 3.0

其缺点也显而易见:在移动时,边缘必然出现锯齿,让画面撕裂。 隔行扫描主要是为了节省宽带(大小大概为同参数的一半),然而在如今几乎用不到了,后续可能会写一篇文章讲反交错(De-interlace)

逐行扫描、隔行扫描对比:

常见视频分辨率及帧率

分辨率 (以 16:9 为例)

分辨率标准
\(1280 \times 720\)HD
\(1600 \times 900\)HD+
\(1920 \times 1080\)Full HD
\(2560 \times 1440\)QHD
\(3200 \times 1800\)QHD+
\(3840 \times 2160\)4K UHD
\(5120 \times 2880\)5K
\(7680 \times 4320\)8K UHD

帧率

  • 23.976 / 23.98 / \(\frac{24,000}{1,001}\)
  • 24
  • 25
  • 29.97 / \(\frac{30,000}{1,001}\)
  • 30
  • 50
  • 59.94 / \(\frac{60,000}{1,001}\)
  • 60
  • 120
  • e.t.c.

采样率

这是音频独有的概念,采样率(Sampling Rate)。类似于视频中的帧率,代表每秒对模拟信号的采样次数。

请注意,采样率 \(\neq\) 声音频率,同时,最好让 采样率 $ $声音频率 ,即最少 \(2\) 倍采样才能避免失真。

例如,信号为 \(250 \, \text{Hz}\),那么采样率必须要为 \(500 \, \text{Hz}\) 才能避免混叠现象。

这也称为 采样定理Nyquist-Shannon Sampling Theorem

实际上有好几个名字,因为它被多个学者独立发现。

\[ w_s \geq 2\cdot w_s \]

一个通俗易懂的理解是:风扇在高速旋转时,人眼可能会认为风扇在以与实际相反的方向旋转。

常用的采样率有: [44100(二倍采样), 48000(二倍采样), 96000(四倍采样), 192000(八倍采样)]

显然的,人耳不能分辨比二倍采样更高的采样率,因为人的声音频率范围只有 \(20\text{KHz}\)

采样深度

之前提到过图像的 色深。这次来说说音频的 采样深度

显然,色深决定了颜色的细腻程度,那么采样深度,则同样决定了音频的细腻程度。具体而言,采样深度决定了 信噪比(SNR),也就是「动态范围」。

在理想的模数转换(ADC, Analog to Digital Converter)下,量化信噪比(SQNR)为:

\[ \text{SQNR}=20\log_{10}(2^Q) \approx 6.02 \cdot Q \, \text{dB} \]

其中,\(Q\) 为量化位数。

也就是说,每一位采样深度大概能让信噪比提高 \(6 \, \text{dB}\).

常见的采样深度为 [16, 20, 24, 32, 浮点]

\(16\,\text{Bit}\) 就已经能有 \(96 \, \text{dB}\) 的动态范围了,完全够用。

比特率

比特率(Bit Rate),很容易理解,就是每秒吞吐量(水管大小)。单位为「比特每秒」(bps)。通常,会加以前缀 km 来表示更大的吞吐。

在无损压缩中,比特率没有意义。因为没有压缩,比特率便仅仅是描述媒体大小的另一种单位而已,只要知道其他参数。以比较简单的无损音频(PCM格式)为例,下式可以计算出比特率(\(B_0\)): \[ B_0 = b \cdot F_\text{s} \cdot N_\text{ch} \]

其中,\(b\) 为采样深度,\(F_\text{s}\) 为采样频率,\(N_\text{ch}\) 为声道个数。以典型的 DVD 音频为例:\(48 \,\text{kHZ}\) 采样率,\(24 \,\text{Bit}\) 采样深度,双声道。可得:\(48\times24\times2=2304\,\text{kbps}\).

同时,有一个适用于所有流媒体的式子:

\[ \text{Bit Rate} = \frac{\text{Size}}{\text{Time}} \]

通常,时间使用 \(s\) 为单位。

比起描述大小,比特率更是控制质量的参数。当然,比特率也并非唯一参数。

至于压缩细节,且听下回分解。

下一篇 FFmpeg 入门与实践 003 - 通用压缩方法及音频压缩

comments powered by Disqus