我使用official sample在Android Chrome中创建商品SDP,我们发现a=rtpmap:100 H264/90000
表示它可以支持H264。
但是,如果我构建AppRTC(official Android sample)并使用official prebuilt libraries版本1.0.25821,则调用createOffer然后在SdpObserver::onCreateSuccess
中接收SDP,则SDP 不包含H264。
我的测试设备是Oppo R15(带有MTK Helio P60,Android 8.1)。
那么,为什么WebRTC仅在Chrome中支持H264,而在某些Android设备上不支持本机应用程序?
答案 0 :(得分:3)
Chrome版本使用的 openh264,常规** WebRTC不会使用。我通常所说的是,您可能会使用chrome版本的软件 h.264 编码器,但可以使用它,但我不建议这样做。
在Android WebRTC 上,仅在
下支持H.264在Java级别,您可以在HardwareVideoEncoderFactory.java
中看到它,它在isHardwareSupportedInCurrentSdkH264
函数中检查QCOM和EXYNOS设备。
有趣的是,如果您使用的是本机代码,甚至不支持QCOM和EXYNOS硬件编码器(Webrtc问题跟踪器中已记录了错误)。这是由于HW编码代码与JNI代码的紧密集成-绝对不是一个好的模块化代码。