如何让 WebRTC 和 HEVC 两者协同工作

让 WebRTC 和 HEVC(H.265) 协同工作既棘手又耗时。让我们来看看它们有哪些优势,是否值得您花费时间。

WebRTC 和 HEVC 是否完美匹配?

WebRTC 是开源、开放标准、免版税 …

HEVC 需要支付版税,由委员会制定,价格昂贵

然而……我们确实看到了 WebRTC 和 HEVC 相得益彰的地方。以下就是我这次要介绍的内容。

如何让 WebRTC 和 HEVC 两者协同工作

WebRTC 和免版税编解码器

在 WebRTC 出现之前,大多数有用的音频和视频编解码器都需要支付专利费。公司发布与媒体压缩相关的专利,然后将其专利所涵盖的技术整合到编解码器标准中,通常是在标准化组织的保护伞下进行。

其中的道理很简单:公司和研究机构需要从他们的努力中获利,否则就不会有高质量的编解码器。那是在我们所知的互联网出现之前…

当 YouTube 等网站出现,UGC(用户生成内容)兴起时,这种情况开始发生转变:

  • 浏览器供应商对此颇有微词,因为浏览器是免费提供的。他们为什么要为编解码器实施许可付费?
  • 内容创作者和发行商也都不想付钱,特别是因为这些都是消费者(UGC),而不是整个好莱坞

新的商业模式或多或少地打破了编解码器使用费的概念。或者至少试图打破。曾有过一些解决方案——智能手机预付硬件编码器费用,解码器许可证无需付费等。

但这并不适合像 WebRTC 这样的产品。

WebRTC 推出后,编解码器大战开始了——WebRTC 应该支持哪些编解码器?

早期倾向于使用免版税编解码器:视频使用 VP8,语音使用 Opus。后来,我们也开始使用 H.264…

H.264 如何进入 WebRTC

H.264 需要支付版权费。但 H.264 还是进入了 WebRTC,这在很大程度上要归功于思科公司。思科决定贡献自己的 H.264 编码器实现并支付版权费(无论如何,他们很可能已经支付了所需的上限)。这就开启了一个奇怪的技术解决方案,为 H.264 腾出空间,并允许其在 WebRTC 中使用:

  • WebRTC 规范将添加 H.264 作为浏览器必须执行的编解码器
  • 浏览器将使用思科 OpenH264 实现作为编码器,但不会将其作为浏览器二进制文件的一部分
  • 浏览器安装后将从思科的 CDN 下载

为什么?因为律师,或者其他什么原因。

这对浏览器有效。但在移动设备上却行不通,在移动设备上的解决方案是使用设备上的硬件编码器,而硬件编码器并不总是存在,也并不总是能像宣传的那样有效。这也让想使用 H.264 的本地开发者头疼不已。但谁会在乎呢?那些只想决定使用 WebRTC 并继续前进的开发者才会关心这个问题。

这样一来,H.264 版税的受益者们肯定会在未来的某个时候要求更多。他们会要求 HEVC。

HEVC、专利和巨头

HEVC 是一个专利雷区,或者至少曾经是,当然我已经有几年没有密切关注这个问题了。

以下是我在架构课程中使用的两张幻灯片:

如何让 WebRTC 和 HEVC 两者协同工作

与 HEVC 相关的专利虽然不多,但也有五位数。这些专利由许多公司拥有,并由多个专利池汇总。据说,其中一些专利会被引入 VP9 和 AV1,但目前大多数市场和供应商对此视而不见。

这些专利使得在应用中加入 HEVC 成为一件麻烦事,你需要弄清楚从哪里获得 HEVC 的实现,以及谁为其专利买单。关于 WebRTC:

  • 需要付费的是浏览器供应商吗?
  • 还是芯片组供应商?
  • 还是设备制造商?
  • 操作系统本身呢?
  • 应用程序供应商呢?

HEVC 的成本很高,很多供应商都要评估是否值得。

HEVC 硬件

软件编解码器和版税支付很棘手。为什么?因为这就牵涉到上文提到的谁来付费的问题。硬件编解码器的性质不同,为其付费的要么是硬件加速供应商,要么是设备制造商。

这意味着编解码器的硬件加速有两个巨大的好处,而不仅仅是一个:

  • 减少设备 CPU 的使用
  • 有人已经支付了编解码器的版税

这很可能就是苹果公司决定从 iPhone 8 开始全面采用 HEVC 的原因–这让他们拥有了安卓手机无法轻易解决的优势:

  • iPhone 垂直整合了芯片组、设备和操作系统
  • Android 设备有芯片组供应商、设备制造商和谷歌。谁来为 HEVC 买单?

多年来,Android 设备的这一差距一直是苹果设备保持领先地位的重要障碍。苹果可以 “轻而易举 “地支付 HEVC 专利费,而 Android 厂商则要想方设法完成这项工作。

今天呢?

英特尔和苹果的硬件都支持 HEVC。其他芯片组供应商也是如此。一些 Android 设备,但并非全部,许多设备只支持解码,不支持编码。

在大多数情况下,设备上的 HEVC 硬件支持就像一块瑞士奶酪,上面的洞比奶酪还多。这就是为什么如今许多人只关注苹果设备的 HEVC 支持(如果有的话)。

HEVC 在 WebRTC 中的优势

说到视频编解码器,有不同时代的编解码器。就 WebRTC 而言,它看起来就是这样:

如何让 WebRTC 和 HEVC 两者协同工作

上图中有两条轴线:

  • 从左到右,从一代编解码器到另一代编解码器。每一代都有更好的压缩率,但计算要求更高
  • 然后是从下到上,从有版税到无版税

如果我们从 VP8 和 H.264 转到下一代的 VP9 和 HEVC,那么在相同比特率的情况下,我们的媒体质量就会提高。但挑战在于与之相关的复杂性和性能。

为了处理增加的计算量,常见的解决方案是使用硬件加速。这在 VP9 中并不常见,但在 HEVC 中更为普遍。尤其是所有苹果设备都支持 HEVC,至少在 Safari 中使用 WebRTC 时是如此。

使用 HEVC 的另一个原因是 WebRTC 以外的媒体处理。传统上,流媒体和广播服务一直使用收取版权费的视频编解码器。现在,它们正慢慢从 H.264 转向 HEVC。这种转变意味着大量媒体资源将使用 H.264 或 HEVC 作为视频编解码器,而 VP8 或 VP9 则不常用。在这种情况下,供应商宁可使用 HEVC,也不愿意使用 VP9 和处理转码问题,他们的另一个选择是坚持使用 H.264。

那么,为什么要使用 HEVC 呢?

  • 它优于 VP8 和 H264
  • HEVC 的硬件加速比 VP9 更常见
  • 我们要连接的设备可能有 HEVC 而不是 VP9
  • 差异化。一些用户、客户、投资者或其他人可能会认为你在做一些独特和创新的事情

HEVC 在 WebRTC 中的局限性

HEVC 需要向众多组织和公司支付专利使用费。

苹果公司已经承诺完全支持 HEVC,但谷歌和 WebRTC 行业的其他公司还没有这样做。

谷歌将只在 Chrome 浏览器中支持 HEVC 作为 WebRTC 的解码器,而且只有在有硬件加速器的情况下才支持 HEVC,没有软件实现。谷歌对此事的 “官方 “立场可在 Chrome 浏览器问题跟踪器中找到。

因此,如果你要支持 HEVC,这里就是你能找到它的地方:

  • 大多数苹果设备(见 https://support.apple.com/en-il/116944)
  • 支持 HEVC 硬件加速的设备上的 Chrome 浏览器(或许还有 Edge?但目前还未实现,正在进行中
  • Firefox 上没有(不过 Mozilla 也尚未将 AV1 添加到 Firefox 中)

等待 AV1 视频编解码器

然后是 AV1,一个经过多年开发的视频编解码器。免版税,它背后有一个新的非营利性行业联盟,成员包括:

如何让 WebRTC 和 HEVC 两者协同工作

规范已准备就绪,软件实现已经存在于 libwebrtc 中,硬件加速即将推出。压缩效果比 HEVC 更好。还有什么不满意的呢?

这让如今的挑战变得格外艰巨——

是投资并采用 HEVC,还是开始投资并采用 AV1?

  • HEVC 如今拥有更多硬件支持
  • 从版税的角度来看,AV1 可以在任何地方运行
  • 许多设备和设备类别都不支持 HEVC
  • AV1 太新,无法认真处理高比特率和视频分辨率问题
  • 即使在可预见的未来,HEVC 也不会被许多设备采用
  • AV1 未来可能在所有地方都得到支持,但现在几乎没有地方支持它

采用 VP9?等待 AV1?

WebRTC 和 HEVC 可应用于哪些领域?

让我们来看看目前有哪些地方可以使用 HEVC。在此基础上,你就可以确定是否值得为你的用例付出努力。

WebRTC 和 HEVC 为苹果带来的机遇

为什么现在投资 HEVC?可能是因为 HEVC 可用于苹果设备。主要是 iPhone。可能适用于非常具体和狭窄的用例。

对于需要在苹果设备上运行的用例,使用 HEVC 可能有一定的道理。如今,有了苹果公司为 HEVC 提供的硬件加速,HEVC 将在那里发挥最大作用。目前要在 iPhone 上以任何其他方式实现类似的视频质量确实很难,甚至不可能。

这样做将为您的解决方案带来差异化和独特性。

至于这样做是否值得,则完全是另一回事了。

英特尔(及其他)HEVC 硬件

英特尔一直致力于为其芯片组添加 HEVC 硬件加速。同时,他们还在推动在 Chrome 浏览器本身的 WebRTC 中实现 HEVC。这背后的原因是一个很大的未知数,或者说至少没有得到太多的解释。

如果让我在这里妄加猜测,那就是英特尔希望与苹果公司密切合作。不知道为什么,英特尔的芯片组对苹果来说已经不再有趣了,他们使用自己的芯片制造设备已经有好几年了。

这可能是出于某种宏大的战略,也可能只是因为英特尔内部的某个部门(或业务部门或团队)需要找点事情做,而 HEVC 既有趣又可以说很重要。HEVC 确实重要,但它对英特尔芯片组上的 WebRTC 重要吗?这是一个悬而未决的问题。

是否应该为 WebRTC 投资 HEVC?

是或否,这要看情况。

当我告诉 Philipp Hancke 我要写这个话题时,他说一定要写 “在 2024 年投资 HEVC 有点晚了”。

我认为这个问题比这更微妙。

首先要考虑的问题是,你有多少精力和资源,能否同时用于 HEVC 和 AV1。如果不能,那么就只能选择其中之一,或者两者都不选。

投资 HEVC 意味着要弄清最终结果如何使你的服务与众不同,或如何使你的服务在某些类型的用户中具有优势,从而使你的服务变得不可抗拒(或可用)。

在大多数情况下,很多 WebRTC 应用程序都会忽略或跳过 HEVC 支持。这意味着,支持 HEVC 或许是一个大显身手的机会,也可能是白费力气。这取决于你如何看待这些问题。

作者:Tsahi Levent-Levi
原文:https://bloggeek.me/webrtc-hevc-work-together/

本文来自作者投稿,版权归原作者所有。如需转载,请注明出处:https://www.nxrte.com/jishu/webrtc/49612.html

(0)

相关推荐

发表回复

登录后才能评论