最近使用了 OBS Studio 录制了视频,忽然发现自己是个菜鸡,后来了解了一下流媒体视频的相关知识。

一、视频

视频格式

通常,判断一个文件最直观的方式就是看该文件的后缀。例如 MP4, MOV, MKV, TS 以及微软的 WMV 等,它们一般被称为视频封装格式。可以把它们理解成一个 container 或者说一个盒子,可以装入视频帧、音频、元数据、字幕等信息。

MKV:MKV 是一种非常灵活的容器,兼容 OBS Studio 支持的所有音频和视频编码器。它具有故障保护功能,即由于断电或其他原因导致的未完成录制仍可播放和恢复。不过,它在编辑软件中的支持度不高,在编辑软件中使用时可能需要重新复用。编辑软件支持不佳。

MP4/MOV:MP4 是互联网视频的事实标准。MOV 是其姊妹格式,在编解码器兼容性方面略有不同,主要用于 Mac 平台。MP4/MOV 需要对文件进行 "最终处理 "才能播放,如果写入过程因故中断,文件可能无法恢复。因此不建议直接录制成 MP4/MOV。编辑软件提供出色的支持。

片段式/分片 MP4/MOV:片段化是一种将 MP4/MOV 文件写成独立块的方法,这样文件就不需要最终处理就能使用,使其具有比 MKV 更高的兼容性,同时具有类似的抗错能力。当使用无损或未压缩音频时,可能需要重新复用才能在某些编辑套件中正常工作。编辑软件有很好的支持。

FLV:FLV 是 RTMP 中使用的容器。它对编解码器的支持非常有限(H.264/AAC),而且只支持单音轨。它的弹性与 MKV 相似,但很少得到编辑软件的支持。编辑软件支持不佳。

MPEG-TS/HLS (M3U8):MPEG-TS 用于各种流媒体协议,其恢复能力与 MKV 相似,但对编解码器的支持较少。在使用 HLS 时,视频是以单独的 .ts 文件加上播放列表的形式分段编写的,播放列表会指示播放器如何读取文件。这主要用于互联网流媒体。MPEG-TS 在编辑软件中得到了很好的支持,HLS 在编辑软件方面的支持很差甚至没有。

视频编解码器

视频编码器可以简单理解成专门用来压缩视频的,解码器正好相反。通常,一个视频若不经过编码器处理的话,视频的体积往往比较大,由于互联网的带宽限制,视频体积当然要越小越好,越利于网络传输。所以封装为指定的视频格式时都会采用一些技术进行压缩。同一种 视频格式可以使用 不同 的编解码器进行编解码。

常见的视频编解码器有如下几种:

AVC/H.264

AVC(Advanced Video Coding)一种用于视频会议的低比特率可视通信标准。H.264 由 MPEG 和 ITU-T VCEG 共同开发。H.264 一种基于 MPEG-4 的国际电信联盟视频压缩标准。H.264 非常流行,尤其适用于蓝光等高清视频。利用当今芯片的优势,H.264 可以压缩更大的帧尺寸。此外,还支持分辨率较低的 MPEG-2 质量,但数据传输率大大降低。

H.264 是 OBS 的默认编解码器。它的历史相当悠久(2004 年标准化),但在网络视频中无处不在,几乎可以在所有设备或软件上播放。对于大多数流媒体服务来说,它是目前唯一受支持的编解码器。同时大多数编辑软件都能提供出色的支持。

HEVC/H.265

HEVC(High Efficiency Video Coding) 国际电信联盟(ITU)和国际标准化组织(ISO)联合开发的超高清视频压缩标准。HEVC 也称为 H.265,支持 8K 分辨率。根据视频内容的不同,HEVC 能以 H.264/AVC 编码一半的比特率提供相同的视频质量,从而能以更少的带宽传输高质量视频,或以相同的带宽传输更高质量的视频。

H.264(2013 年标准化)的继承者,在相同比特率/文件大小的情况下提供更好的质量。不过,由于其许可协议限制较多,网络流媒体并未广泛支持或使用它。它仅通过 OBS Studio 中的硬件编码器(英伟达 NVENC、AMD AMF、英特尔 QSV、苹果 VT)支持。编辑软件有较好的支持。

AV1

AOMedia Video 1 开放媒体联盟(AOMedia)的一种视频编解码器。该联盟成立于 2015 年,AV1 于 2018 年首次发布。AV1 旨在取代 VP9 编解码器,成为 IETF 互联网视频编解码器(NETVC)标准。思科的 Thor 编解码器和 Xiph.Org 基金会的 Daala 编解码器的元素也包含在内。AV1 的主要竞争对手是 HEVC/H.265,与之相比,AV1 完全免收版权费,而且 AV1 的功能都经过仔细的专利侵权审查。

OBS Studio 支持的最新编解码器(2019 年标准化),与 HEVC 相比,质量/文件大小均有改善。软件编码可使用 SVT-AV1/libaom-av1,但需要高端 CPU 进行实时压缩。也可通过 AMD(RX 7000 系列)、NVIDIA(RTX 40 系列)和英特尔(Arc)最新 GPU 上的硬件编码器进行编码。编辑软件尚不支持。

SVT-AV1 是开源的 AV1 编解码器实现。英特尔和 Netflix 自2018年8月以来一直在就 SVT-AV1 编解码器框架进行合作。团队一直密切合作进行 SVT-AV1 的开发、交流架构决策;实施新工具并改善压缩效率。

ProRes

Apple 的编解码器,适用于不需要考虑文件大小的专业用途,可根据质量需求提供各种配置文件。通过 Mac 上的硬件和软件编码器提供支持。编辑软件有较好的支持。

Rate Control(速率控制):CBR、VBR、CQP

如果互联网是完美的,那么所有流媒体都可以使用 CQP(或者更好的:任何恒定质量模式,如 CRF 或 ICQ)。这些编码方法对每一帧都能产生相同的质量,与运动无关。在这种情况下,如果运动量大,则需要较高的比特率;如果运动量小,则需要较低的比特率。遗憾的是,比特率可变的数据流无法在互联网上完美传输。如果高动态场景的比特率升高,而接收方(用户)又有很多,发送方的连接可能会超载,每个接收方都会出现延迟或缓冲视频。每当一个接收器的带宽超过短时间的比特率峰值时,也会发生这种情况。

对于录制而言,基于质量的编码方式(VBR)效果更好,因为高运动场景的编码质量比 CBR 模式更好。当然,也可以将 CBR 的比特率提高到最高级别,这样就不会再看到差异,但这样做会浪费磁盘空间,因为低运动场景可以用更少的带宽(或空间)保存,而不会影响质量。

速率控制详解

  1. CBR:恒定码率控制算法,用以恒定比特率流式传输或录制。质量由比特率决定。比特率越高,质量越好。

  2. VBR:可变码率控制算法,用以实时、录制和可变比特率流式传输。根据 SDK 的描述,该算法符合 HRD 标准,可能可以很好地用于流式传输,尽管它不是严格的恒定比特率算法。质量由 2 比特率参数决定。比特率越高,质量越好。

  3. CQP:常量化参数算法,用以可变比特率录制。无论运动如何,视频都以恒定的质量编码。比特率由视频材料的复杂性决定。质量由 QPI,QPP 和 QPB 参数决定。QPI 确定帧内质量(称为关键帧),QPP 确定预测 (P-) 帧质量,QPB 确定 h.264 B 帧(P 帧的较弱版本)。您希望对所有 3 个参数使用相同的值。非常适合原始素材的本地录制,因为如果您将比特率设置得足够高,质量不限于比特率,同时不会在低复杂场景中浪费磁盘空间。质量由 3 个 QP 参数 (1…51) 决定。值越低,质量越好,最终视频占用空间较大。最佳点可能在 20-25 左右。我的选择是 22,最大比特率为 50000,这导致平均比特率约为 29000,同时保持最高质量的高复杂场景。低于 22 的值会大大增加比特率要求。并非在每个高清显卡中都可用。

  4. AVBR:平均可变比特率控制算法,用以可变比特率录制。质量由比特率决定。比特率越高,质量越好。允许高复杂度短场景的比特率消耗峰值,以保持质量。高复杂度场景的质量由精度和收敛参数决定。这对于像 VBR 算法(不符合 HRD 标准)这样的流媒体来说不够稳定。该算法并非在每个高清显卡中都可用。

  5. LA(VBR):具有前瞻性的 VBR 算法(VBR 升级版),用以可变比特率录制。VBR 算法的更好版本。质量改进了 VBR。由于在实际编码之前对几十帧进行了大量分析,因此延迟巨大,内存消耗增加。质量由比特率和预视深度 (1…100) 决定。比特率越高,质量越好。LA 值为 0 时,SDK 为默认值。该算法并非在每个高清显卡中都可用。

  6. ICQ:智能恒定质量算法,用以可变比特率录制。CQP 模式的更好版本。以恒定的质量录制,类似于x.264的CRF模式,比CQP模式更好地使用带宽。质量由 ICQQuality 参数 (1…51) 确定,其中 1 对应于最佳质量。ICQQuality 的理智值可能在 20…25 左右,就像在 CQP 模式下一样。该算法并非在每个高清显卡中都可用。

  7. VCM:视频会议模式,用以视频会议。可能是低延迟、低比特率要求、低质量。我没有找到有关此模式的任何详细信息,但它可能不适合高质量的流媒体或录制,但专注于低带宽使用和数据流的稳健性。并非在每个高清显卡中都可用。

  8. LA ICQ:具有前瞻性的智能恒定质量算法,用以可变比特率录制。与 LA (VBR) 相同的质量改进和注意事项,但适用于 ICQ 算法。可能是最好的质量,同时消耗所有可用算法中最少的带宽 - 如果您的 CPU 支持它。质量由 ICQQuality 参数 (1…51) 和前瞻深度 (1…100) 确定,其中 1 对应于最佳质量。“前瞻”越大,质量越好,其中 0 表示 SDK 默认值。ICQQuality 的理智值可能在 20…25 左右,就像在 CQP 模式下一样。该算法并非在每个高清显卡中都可用。

OBS 论坛有大佬给出的推荐顺序是:

LA ICQ -> ICQ -> CQP -> LA (VBR) -> AVBR -> VBR -> CBR

浪子推荐:

如果主要使用流式传输,则保持 OBS 的默认值(CBR 2500kbs)即可,也可以使用 VBR,但不推荐其它的算法。如果电脑的配置较好,可以适当提高码率,核显的话还是推荐保持默认值即可。如果直播是游戏的话,推荐使用独显。核显可以玩游戏,但不代表可以直播;如果可以直播,但不代表最终质量如何。

本地录制的选择就较多了,可以结合自己的硬件选择,情况不一。

视频最终的质量由编码 + 码率决定。一般互联网视频推荐 .H264 编码封装为 MP4 的格式。
码率越大,视频体积越大。

视频画面比例

常见的竖屏画面比例为 4:3;横屏为 16:9、18:9、21:9,横向数字越大,上下的黑边越宽。还有其它各种稀奇古怪的比例,就不详细讲解了,可以观看视频:

如果什么都不懂,建议导出竖屏时 4:3,横屏时 16:9,这些硬件支持较好。

二、音频

音频编解码器

AAC:与 H.264 一样,AAC 的历史也相当悠久(1997 年),但支持范围非常广泛,在典型比特率下仍能提供不错的质量。几乎所有流媒体服务都使用这种编解码器。编辑软件提供出色的支持。

Opus:比 AAC(2012 年)的编解码器更新、质量更高,并且免费授权。它的质量更高,但兼容性更差。编辑软件提供一般支持。

FLAC:无损编解码器,免费授权,广泛用于音乐,但不太支持视频文件。编辑软件提供一般支持。

ALAC:苹果公司的无损音频编解码器,在 MOV/MP4 和编辑软件中得到很好的支持。编辑软件有较好的支持。

PCM:无压缩音频,包括 32 位浮点录音支持,使编辑更加灵活。编辑软件提供出色的支持。

三、音/视频格式与编解码器的兼容性

视频编解码器与音频编解码器的兼容性

编解码器 H.264 HEVC AV1 ProRes
AAC Any MP4, MOV, MKV, TS MP4, MKV MOV, MKV
ALAC MP4, MOV, MKV MP4, MOV, MKV MP4, MKV MOV, MKV
FLAC MP4, MKV MP4, MKV MP4, MKV MKV
Opus MP4, MKV, TS MP4, MKV, TS MP4, MKV MKV
PCM MOV, MKV MOV, MKV MKV MOV, MKV
  • 表格横向为视频编解码器,纵向为音频编解码器;
  • TS 包括 m3u8(HLS);

视频格式与其编解码器的支持

container H.264 HEVC AV1 ProRes
FLV
MP4
MOV
MKV
M3U8 (HLS)
TS

MPEG-TS 中的 AV1 正在标准化,一旦最终确定,它将可用于 TS 和 HLS 输出。

音频格式与编解码器的兼容性支持

container AAC ALAC FLAC Opus PCM
FLV
MP4
MOV
MKV
M3U8 (HLS)
TS

MP4 中的 PCM 是标准化的,但 FFmpeg 和 OBS Studio 尚不支持。


本站由 江湖浪子 使用 Stellar 1.29.1 主题创建。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。