如何检测Android H.264硬件加速能力
How to detect Android H.264 hardware acceleration capability
虽然不是全部,但有大量 Android 设备支持 H.264 视频编解码器的硬件加速,但不支持 VP8/VP9 编解码器。为了提供更高质量的用户体验,我们希望 select 尽可能使用硬件加速的编解码器。因此,需要运行时检测特定设备是否支持 H.264 硬件加速,并基于此设置特定编解码器,该编解码器在 SDP 中用于 webRTC 对等连接的会话协商。即,如果硬件支持 H.264,则将其设置为更高优先级的编解码器,而不是 VP8/VP9。对此有任何想法将不胜感激。
使用 MediaCodecList API 迭代可用的编码器和解码器。名称以 OMX.google.
开头的编码器是 SW 编解码器 - 任何其他编解码器或多或少都可以假定为 HW 编解码器。最简单的可能是使用 findEncoderForFormat
(和 findDecoderForFormat
)并查看此 returns 的名称。如果您需要更多详细信息,可以手动遍历列表。
根据 Justin Uberti 的评论 here,如果设备上有硬件编码器,您将仅在 Android WebRTC 中获得 H.264。因此,您可以简单地将 WebRTC 设置为更喜欢 H.264 - 如果有 HW 编码器,将使用 HW H.264。如果不是,那就是 VP8/VP9.
虽然不是全部,但有大量 Android 设备支持 H.264 视频编解码器的硬件加速,但不支持 VP8/VP9 编解码器。为了提供更高质量的用户体验,我们希望 select 尽可能使用硬件加速的编解码器。因此,需要运行时检测特定设备是否支持 H.264 硬件加速,并基于此设置特定编解码器,该编解码器在 SDP 中用于 webRTC 对等连接的会话协商。即,如果硬件支持 H.264,则将其设置为更高优先级的编解码器,而不是 VP8/VP9。对此有任何想法将不胜感激。
使用 MediaCodecList API 迭代可用的编码器和解码器。名称以 OMX.google.
开头的编码器是 SW 编解码器 - 任何其他编解码器或多或少都可以假定为 HW 编解码器。最简单的可能是使用 findEncoderForFormat
(和 findDecoderForFormat
)并查看此 returns 的名称。如果您需要更多详细信息,可以手动遍历列表。
根据 Justin Uberti 的评论 here,如果设备上有硬件编码器,您将仅在 Android WebRTC 中获得 H.264。因此,您可以简单地将 WebRTC 设置为更喜欢 H.264 - 如果有 HW 编码器,将使用 HW H.264。如果不是,那就是 VP8/VP9.