首页 > 解决方案 > 是否可以将 H.264 软件编解码器安装到 Google 的原生 Android WebRTC 库?

问题描述

根据这篇文章(如何检测 Android H.264 硬件加速能力)以及个人经验,WebRTC 的最新 Android 原生库('org.webrtc:google-webrtc:1.0.23546')不支持 H.264,除非有一个硬件解码器。

到目前为止,这仅在使用模拟器时影响我,但我知道某些设备它不会工作,所以这可能是一个大问题。

思科在https://github.com/cisco/openh264上提供了他们的 H.264 软件解码器,我想知道是否有办法使用它或其他方式来安装软件 H.264在没有硬件解码的设备上使用 WebRTC。

此外,我似乎无法在设备上找到 H.264 硬件解码的支持矩阵。

标签: androidwebrtcopenh264

解决方案


可以使用 JCodec 完成。Google 提供了在 Java 中创建自定义解码器的访问权限。

-- Decoder.decodeFrame 已经是 YUV 格式

-- Y,U,V 的数据可以在 frame.getPlaneData(0/1/2) 中找到

-- StrideY/U/V 是 frame.getWidth() >> frame.getColor().compWidth[planeIndex]

-- 根据“org.jcodec.common.model.Picture”中的header数据移位128。需要调整(byte)(a[i] + 128)。


推荐阅读