【问题标题】:How to force hardware accelerated video decoding in node-webkit under Windows?windows下如何在node-webkit中强制硬件加速视频解码?
【发布时间】:2013-09-29 14:17:44
【问题描述】:

我有一个非常简单的静态测试页面:

<body>
<video autoplay loop>
  <source src='ng_full.mp4' />
</video>
</body>

当我在 node-webkit 中打开它时(在 0.6.3 到 0.7.5 版本上测试),与 chrome 0.29.xx 和 chromium 0.31 以及来自 chrome 的 ffmpegsumo 相比,我得到了两倍的 CPU 负载。 我还可以在 chrome 中运行大约 8 个页面副本,而在 nw.exe 中运行 4 个副本,而没有视频变得生涩。 分别在 Intel i5 第一代和第三代与 nVidia GF9500GT 和 Intel HD 4600 上进行测试。 当在 MPC-HC 中使用和不使用 DXVA 显示相同的视频时,这也与 CPU 负载相关。

根据我的结论——硬件视频解码加速在 node-webkit 中不起作用!

我需要在单台机器上同时播放尽可能多的视频,而 GPU 解码比 CPU 解码提供了两倍的流。

我使用的是来自 node-webkit github 页面的构建。也许带有适当开关的自定义构建会有所帮助? 或者也许可以在默认构建时强制硬件解码?

【问题讨论】:

  • 虽然 chrome:gpu 在 node-webkit 中损坏了
  • 虽然 chrome:gpu 在 node-webkit 中被破坏,但我设法通过打开 chrome:gpu url 并在 DevTools 控制台中输入 var browserBridge = { onGpuInfoUpdate:function(arg){console.log(arg);}};chrome.send('browserBridgeInitialized'); 来获取 gpu 信息。然后我发现了 featureStatus 数组,它有 name=='video_decode' 和 status=='enabed' 的条目。所以铬标志是可以的。然后我不明白为什么我有CPU负载差异。

标签: google-chrome video webkit node-webkit


【解决方案1】:

尝试添加任何 css 着色器或 webgl,它会自动强制加速合成。这应该让您了解它是视频 (ffmpeg) 还是它实际上是 GPU/chrome 渲染引擎。

您还可以使用 --forced-compositing-mode 强制加速合成到 package.json 中的 chromium args 以查看是否有任何影响。

我的直觉说 chrome.exe 可能会使用其他具有特定硬件加速的许可(但不是开源)解码器,而使用 ffmpeg 则依赖于 cpu。

【讨论】:

    猜你喜欢
    • 2012-07-04
    • 2019-03-16
    • 2016-07-28
    • 2015-11-29
    • 1970-01-01
    • 1970-01-01
    • 2018-01-30
    • 1970-01-01
    • 2014-10-18
    相关资源
    最近更新 更多