设备:华为 mate60,Android 12,屏幕分辨率 1260x2720
现象:调用 callSession.startScreenShare(Intent data) 后,HardwareVideoEncoder.initEncodeInternal 抛出 IllegalArgumentException,MediaCodec.configure 失败。
原因分析:设备分辨率 1260 不是 16 的倍数(1260/16=78.75),H264 编码器要求宽高对齐 16。ScreenCapturerAndroid 直接用了设备原始分辨率,没有做对齐处理。
日志:
E HardwareVideoEncoder: initEncodeInternal failed
E HardwareVideoEncoder: java.lang.IllegalArgumentException
at android.media.MediaCodec.native_configure(Native Method)
at org.webrtc.HardwareVideoEncoder.initEncodeInternal(HardwareVideoEncoder.java:287)
请问:
ScreenCapturerAndroid 能否在 startCapture 时自动将分辨率对齐到 16 的倍数?
或者有没有接口可以设置屏幕共享的采集分辨率?