Ber*_*rnd 6 linux video google-chrome hardware-acceleration vp8
我有"华擎"中的"Beebox".该机器的处理器是Intel Celeron N3150,支持VP8视频流的硬件编码和解码.我想在Google Chrome(在Debian Linux上)中使用此功能来进行WebRTC调用.但我不确定如何证明Chrome真正使用硬件编码/解码.
到目前为止我的发现
不幸的是,Linux上的情况非常令人困惑.除了不同的加速API(VAAPI,VDPAU等),其中我不知道Chrome实际上使用了哪些,Chrome通过以下方式增加了额外的混淆:
视频解码:仅限软件,硬件加速不可用
视频编码:硬件加速
在" chrome:// gpu "页面上.
编码:尽管ist说加速编码,但在将HD Video编码为VP8流时,我的CPU负载为60-70%.这对我来说看起来不像HW编码.
解码:就我在网上看到的而言,Linux下的Chrome上似乎根本不支持硬件解码.有一个名为--ignore-gpu-blacklist的Chrome开关确实将" 视频解码 "行从" 仅软件...... "变为" 硬件加速 ",但这并没有改变任何东西.我还与Kodi和VLC等不同的媒体播放器进行了一些研究.这些播放器在播放VP8时显示CPU负载约为25-30%,这确实可能是硬件解码,但令人惊讶的是,当我关闭这些播放器中的硬件编码时,根本没有任何变化.这反过来让我相信即使这些也不会在HW中解码.
工具: 我发现了一些工具,甚至来自英特尔,但大多数都是指GPU负载(这意味着3D加速).我还尝试了来自mesa-utils的glxinfo,其中说:" 直接渲染:是 ",并且根据该线程确认支持HW解码(?).但这只是说明支持是可用的,而不是当前是否有任何应用程序真正使用它.
题
当在Linux上编码或解码VP8视频流时,有没有办法清楚地验证硬件编码器和/或解码器是否正常工作?
我非常感谢你的帮助!
1)这里有一个更具体的标志。在中Chrome://gpu,您应该看到VPx Video Decode:
它说的是硬件还是软件?
2)可以尝试的相关方法:在Chrome中转到YouTube,播放任何视频。播放视频时,右键单击该视频,然后Stats for Nerds从上下文菜单中选择。
这样可以告诉您YouTube是否为您提供VP8,VP9或H.264。这可能是一个有用的线索,特别是如果您正在获取H.264。(这在笔记本电脑上会更有帮助,因为如果Chrome像MS Edge一样,当笔记本电脑依靠电池供电时,它将停止广告VPx支持,迫使YouTube为其提供H.264,因为VPx消耗的电池比H .264,即使经过硬件解码也是如此。H.264的编码工作量要少得多,并且其硬件解码比VPx硬件解码更有效。KabyLake最终可能会缩小差距。)
3)还有其他一些问题。Chrome软件渲染列表中有一些有趣的条目,表明Chrome甚至可能忽略了相当新的Intel GPU,包括您的Braswell芯片。检查它在这里。请注意,有一个条目说:“ VPx解码在Intel Broadwell,Skylake和CherryView上太慢了”。
如果遵循面包屑路径,您会看到这意味着每个带有特定PCIID掩码的gpu(例如N3150应该为0x22b1)。虽然仅是Windows,而且它也可能是已经修复的旧错误的残余。
还请注意其他可能的条目,其中一些提到特定的Intel驱动程序版本以及特定的Linux内核版本。
4)确保您的Chrome://flags页面实际上指示覆盖了软件渲染列表(这是第一个标志)。您用旧的“黑名单”一词提到了命令行语法,但是该标志近年来出现了一些错误,对于某些人和其他问题基本上不起作用。我只是仔细检查一下是否设置了此标志,它实际上以正确的设置显示在标志页面中。如果不是,请在该页面中正确设置它。请注意,存在一个错误,该错误可能与您的问题有关,也可能不与您相关的问题相关联-覆盖软件渲染列表会翻转chrome://gpu 即使在没有VPx硬件加速功能的PC上,也可以加速硬件加速,例如我现在使用Intel HD 4000的Ivy Bridge笔记本电脑。我不知道这是否只是一个外观错误,Chrome并没有真正尝试使用硬件加速,或者Chrome是否确实在这样做(这似乎必须崩溃或发生某些事情,但实际上不是)。
Chrome标志是一团混乱和冲突的单词选择。该标志显示“ 覆盖软件渲染列表”。此标志需要启用,而不是禁用。但是,如果已启用,您将看不到“已启用”或任何状态指示器字样。您会看到Disable一词,是更改设置的邀请。请注意...也许这对您来说都是旧帽子。
5)英特尔Media SDK是最后一个渠道,但是非常强大的资源来了解系统上VP8的运行情况。如果默认情况下它不是免费的,则它是作为英特尔IDE / C ++编译器学生版以及付费IDE版本的免费试用版的一部分免费的。您可以在那里做很多事情来查看最新情况。他们的《开发人员指南》第24页中的这段内容令我震惊:
可以通过简单的编译步骤将硬件加速添加到FFmpeg。对于使用FFmpeg命令行或libav * API编写的应用程序,可以通过更改编解码器名称(例如,从libx264更改为h264_qsv)来启用硬件。
我将在ffmpeg中针对VP8编解码器使用该方法,以查看是否可以在Chrome之外完全触发系统上的硬件加速。
6)另外请注意,在视频编解码器中,术语“硬件加速”在整个行业中使用不一致,而且我不确定Chrome到底是什么意思(在标志中)。解码可以由GPU 加速,也可以由固定功能单元在硬件中完全执行,该功能单元也恰好在GPU上(但不使用GPU着色器)。两者都称为硬件加速,但它们不是同一回事。有时会使用“完全硬件化”或“固定功能”来区分这种情况和一般的GPU加速(有时称为部分加速或混合加速)。
在官方 文档都相当混乱,但布拉斯韦尔(就像它的前辈和Broadwell微架构)应该有充分的固定功能的VP8解码。而编码和VP9(就像在Skylake中一样,可能具有相同的QSV模块)是通过混合解决方案提供的。我认为他们正在使用某种类型的GPU加速(使用着色器,也许使用OpenGL或OpenCL等,但我不知道细节)。这种区别尤其重要,尤其是当您使用电池供电的设备时(更不用说HEVC在质量上会突飞猛进)。而且我想这样也许可以证明Chrome开发人员小组就如何使用Braswell模型做出决定。不幸的是,所有这些都没有得到很好的记录。