WebRTC android h264 编解码适配(二)

本文针对Android设备在使用WebRTC进行H264编解码时遇到的绿屏和视频不可见问题进行了分析。问题主要出现在CPU为联发科MT6735至MT6755以及华为Kirin930/Kirin935的机型上。通过对日志的深入分析,发现是colorFormat不支持导致。通过屏蔽特定的colorFormat,如CodecCapabilities.COLOR_FormatYUV420Planar,成功解决了华为畅享5和华为P8上的问题。作者提醒,API虽然标明支持某些颜色格式,但实际可能并不支持,这可能是由手机厂商的硬件实现引起的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近一段时间接到不少android客户反馈,看到对方的视频是绿屏,还有一些反馈对方看不到自己的视频,由于我们使用的是h264硬编解码,首先想到的是编解码这块出现了问题。

先看绿屏的问题,收集了下反馈机型,主要集中在cpu为联发科MT6735至MT6755的机器上,使用的硬件编解码器是OMX.MTK.**,随便在云真机测试平台找了台机器-华为畅享5(TIT-AL00)测试,果然是绿屏。打开webrtc全日志

 Logging.enableTracing(
                "logcat:",
                EnumSet.of(Logging.TraceLevel.TRACE_ALL))
        Logging.enableLogToDebugOutput(Logging.Severity.LS_SENSITIVE)

再编译个版本在华为畅享5上跑,日志下载下来,逐条分析,有一段日志很奇怪:

04-12 15:58:45.440 W/hwcomposer(  260): [BLT] Not support color range(0), use default BT601
04-12 15:58:45.440 W/hwcomposer(  260): [BLT] Not support color range(0), use default BT601

hwcomposer是android4.0后推出的新特性,它定义了一套HAL接口,然后各大厂商需要根据自己硬件特性去实现,其实就是一些图层处理功能,这里报了color不支持。下面我们追踪一下源码,看看webrtc 解码中使用了哪些color

  private static @Nullable DecoderProperties findDecoder(
      String mime, String[] supportedCodecPrefixes) {
      ...
      // Check if codec
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值