为什么Netflix在全屏模式下表现更好(更有效)?


6

前几天我注意到,当我在Retina MacBook Pro上使用Chrome浏览器观看Netflix上的电影时,当我在常规窗口的单个标签中观看视频时,粉丝会更快地旋转。 (即不是全屏。)

当切换到全屏模式时,在一分钟左右的时间内,风扇会消失。

所以我使用电池监视器应用程序在两种模式下观察时测量mAh,在窗口模式下测量约85 mAh,在全屏模式下测量约50 mAh。

我还没有在其他浏览器中测试过。

活动监视器报告只是在标签中打开Netflix会导致离散卡启动,因此我认为这不是集成与独立图形的问题。

我似乎无法确定为什么会有更大的观看区域和(理论上)更高质量的视频流 系统资源。

Answers:


6

它几乎肯定与桌面窗口合成器有关。

当您在网络浏览器窗口中播放视频时,更糟糕的是,在 插入 ,Web浏览器必须如此呈现其页面:

  1. 画出我们的窗户装饰(地址栏,书签,按钮等)
  2. 绘制网页的第一部分。
  3. 绘制视频应该是的“黑色方块”,但在其两侧(左侧和右侧)绘制网页的相关部分。
  4. 请插件很好地在它说它想要窗口的地方绘制。
  5. 绘制窗口下方的其余网页,直到页面底部。
  6. 在此序列的顶部,合成窗口管理器负责动画效果(如最小化和最大化窗口等),必须跟踪屏幕上每个窗口的内容。作为其中的一部分,它必须跟踪窗口内的所有内容,包括Chrome中的插件 外的过程 插件(意思是,它是另一个进程的一部分,而不是chrome主进程)。如果合成窗口管理器没有跟踪这一点,并将窗口中的所有内容视为“3D纹理”,则单击减号按钮时,无法将窗口最小化设置为任务栏。

当你告诉Flash(或Silverlight)全屏播放视频时,Flash会停止告诉Chrome渲染任何内容。事实上,整个合成窗口管理器可以暂时禁用,并且可能负责向监视器渲染图形的每个其他程序暂时被告知停止渲染(或者,也许,他们可以提交绘图命令,但他们没有实际效果在屏幕上。)

图形管道虽然不是全屏:

浏览器和Flash / Silverlight - >合成窗口管理器 - >图形硬件

全屏图形管道:

Flash / Silverlight - >图形硬件

这种简化的管道减少了开销,因为缓冲“复制”的次数较少,整个视频处理看起来像这样:

  1. 从网络下载视频内容。
  2. 使用DRM系统解密视频。
  3. 使用称为固定功能视频解码管道的GPU的特殊部分来执行 硬件解码 将视频数据转换为未压缩格式。
  4. 硬件视频解码管道现在可以将解码后的视频直接复制到图形帧缓冲区并播放 - 无需将其发送回CPU / RAM!

由于合成窗口管理器总是说“好的,视频现在看起来像什么?”,因此当视频正好开窗时,粉丝会旋转并获得更多电量。它必须是 在合成窗口管理器然后决定将其直接写回到显卡以及所有其他合成数据(浏览器,任务栏等)之前,返回到CPU(并且可能缓冲在RAM中)

合成窗口管理器必须不断要求将视频内容传输回CPU,因为在正常情况下,系统上唯一允许写入的进程 到视频帧缓冲区 合成窗口管理器。浏览器,视频播放器和系统上的所有其他组件都必须通过合成窗口管理器,如网守或发言人,它位于硬件和用户空间之间。

这部分是为了实现“效果”,部分是出于安全性和稳定性的原因,因为程序无法直接破坏桌面(恶意或不良编码);合成窗口管理器不会让它。但是,当合成窗口管理器被禁用时(在Flash和Silverlight等特权程序的请求下),突然间,额外的“开销”层就消失了。

调用Mac OS X上使用的合成窗口管理器 Quartz Compositor 它已经成为OS X的一部分很长一段时间了。 石英至尊 是Quartz合成器的现代化身,它在GPU本身上完成了我上面描述的所有内容(虽然这些操作不是“免费”的,因为它们被卸载到GPU; GPU仍然消耗功率执行这些合成步骤。)

对于开发人员的角度,确切了解程序(如Flash或Silverlight)如何进行全屏控制并暂时禁用Quartz Compositor,请参阅 这个Apple开发者文档

长话短说: Quartz Compositor +非常频繁的屏幕更新(每秒30至60次视频)==高CPU使用率。从管道中删除Quartz Compositor组件,CPU使用率急剧下降,特别是因为Flash和Silverlight具有硬件加速的视频渲染和视频解码。


对于90年代的硬件和软件(我经常使用),这个答案听起来像90年代写的。简单的答案是,您不是实时大规模缩放全动态视频,而您的图形卡只是以原始分辨率运行它。合成和效果与它无关,就像20年前一样。 CPU和GPU可以轻松处理空闲合成。
Dorian

-1

这有几个可能的原因。

原因也将根据您的屏幕分辨率和收到的netflix分辨率而有所不同。

如果您正在全屏观看,并以匹配的分辨率观看netflix,例如高清显示器上的高清,流直接发布到屏幕,没有真正的努力。

但是,如果您在较小的窗口中观看高清视频流,则需要在您的计算机上进一步处理该流,以便使用某种过滤方式将其放入给定的查看窗口内。这显然会减慢机器速度和/或需要更多资源来实现。

唯一的另一面是,如果您为较小的窗口提供匹配的较小分辨率流。在这种情况下,它应该类似于全屏。

最重要的是,当全屏显示时,您的机器只是渲染查看窗口。但是,在窗口模式下,您还要渲染桌面,其他窗口等等。需要更多处理/资源。

还有更多的理由我没有涉及。


-1

Chrome有时暂停一段时间没有使用的标签(如果你在后台打开它们还没有加载) - 也许制作全屏幕的效果相同?

如果我的预感是正确的,那么对此的合理解释是,当您在全屏模式下查看某些内容时,您不太可能切换标签(您甚至可能无法切换)。您从全屏模式退出的时间 切换选项卡有足够的时间让Chrome恢复您最有可能切换到的标签。这可以解释切换到全屏时电源使用率的突然下降。也可能需要注意的是,全屏视频流通常被视为一个单独的窗口,这意味着当Netflix处于全屏模式时,Chrome本身不再具有焦点。

您可能希望将这些结果与其他与全屏兼容的网站(例如YouTube)进行比较,如果可能,还可以将其他网站与Silverlight和全屏模式进行比较。


只是想补充说,在我写答案时提交的其他答案听起来同样合理。如果它是几个因素的组合,我不会感到惊讶。
James Thomas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.