本文介绍了针对Android设备中H264硬解码在WebRTC视频通话中出现的黑屏问题,通过代码优化和适配策略改善了不同型号手机间的兼容性和稳定性。提供相关源码供开发者参考学习。
问题现象是使用WebRTC进行视频连接时一切正常但屏幕为黑屏无法显示内容。原因在于原生的WebRTC默认支持高通、英特尔及三星CPU等知名厂商生产的设备,而对于一些小众或新推出的CPU则未开启相应支持,需要手动添加。
修改文件包括:HardwareVideoEncoderFactory.java和MediaCodecVideoDecoderFactory,并且依赖包是Java源码而非之前基于webrtc的版本。通过这些改动可以兼容多种不同类型的手机及电视盒子等设备(例如小米4电视、天猫魔盒以及华为系列手机)。
在代码中添加了对以下厂商及型号的支持:
- OMX.qcom.
- OMX.Intel.
- OMX.Exynos.
- OMX.Nvidia.H264. /*Nexus 7(2012), Nexus 9, Tegra 3, Tegra K1*/
- OMX.ittiam.video. /*小米Mi 1s*/
- OMX.SEC.avc. /*Exynos 3110,Nexus S */
- OMX.IMG.MSVDX. /*华为荣耀6、麒麟920*/
- OMX.k3.video. /*华为荣耀3C、麒麟910*/
- OMX.hisi. /*高端华为手机及Kirin 950设备*/
- OMX.TI.DUCATI1. /*Galaxy Nexus,Ti OMAP4460 */
- OMX.MTK.VIDEO.
- OMX.LG.decoder.
- OMX.rk.video_decoder./*Youku TVBox(我们的服务不需要此项支持)*/
- OMX.amlogic. /*晶晨芯片*/