gpt4 book ai didi

WebRTC:如何为视频编码器启用硬件加速

转载 作者:行者123 更新时间:2023-12-03 17:23:55 31 4
gpt4 key购买 nike

我正在尝试在 WebRTC 的帮助下将屏幕截图的视频发送到 mediasoup。 WebRTC 库中有一个类:ScreenCapturerAndroid。
它有效,但在某些设备上的性能非常糟糕。特别是如果我使用 HD 或更好的显示分辨率。
在 stackoverflow 上,我发现了一个 suggestion调用 setEnableVideoHwAcceleration(true) 和 setVideoHwAccelerationOptions()。但是在较新版本的 WebRTC 库中,methods have been removed .
这是我的代码:

  // ...
PeerConnectionFactory.Builder builder = PeerConnectionFactory.builder();
builder.setOptions(null);

EglBase.Context eglContext = EglUtils.getRootEglBaseContext();

VideoEncoderFactory encoderFactory =
new DefaultVideoEncoderFactory(
eglContext, true /* enableIntelVp8Encoder */, true);


PeerConnectionFactory.InitializationOptions initializationOptions =
PeerConnectionFactory.InitializationOptions.builder(context)
// .setEnableVideoHwAcceleration(true) // <-- does not work any more
.createInitializationOptions();
PeerConnectionFactory.initialize(initializationOptions);

mPeerConnectionFactory =
builder
.setVideoEncoderFactory(encoderFactory)
.createPeerConnectionFactory();
我的问题是:如何使用较新的 WebRTC 库版本为屏幕捕获启用视频硬件加速。

最佳答案

这取决于您的设备以及您使用的 libwebrtc 版本。因此,您可以检查 webrtc 源代码以了解硬件支持与否。这意味着如果您的 libwebrtc 在源代码中没有为它做一些工作,则将不支持视频编码器的硬件加速。 :P
因此,如果您的 libwebrtc 不支持它,那么即使您在应用程序级别的设置正确,也无法快速查看任何内容。
那么,我们来谈谈如何在libwebrtc中检查视频编码器的硬件加速。
检查此源代码
https://chromium.googlesource.com/external/webrtc/+/HEAD/sdk/android/api/org/webrtc/HardwareVideoEncoderFactory.java
可以在 HardwareVideoEncoderFactory.java 中搜索关键字:
“isHardwareSupportedInCurrentSdk”
今天是 1 月 12 日,我截屏了代码。
enter image description here
从源代码来看,它们确实显示了清晰的信息。
顺便说一句,您还可以在 GooglePlay 中下载一些 Media Codec Info App 来检查不同类型的 android 手机的不同类型的编码器/解码器。这也会有帮助。

关于WebRTC:如何为视频编码器启用硬件加速,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63137545/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com