我使用 Janus-Gateway 作为服务器,并使用 flutter WebRTC 插件为视频播放器创建了一个应用程序。该应用程序可以将 VP8 流发送到 Android 设备,但是当我尝试发送 h264 编码视频时,出现错误。据我了解,Android WebRTC 在没有硬件加速的情况下不支持 h264 解码。
但是有没有办法强制 Google 的 android webrtc 插件允许软件解码?
没有像 iOS 启用 VP8 那样为 Android WebRTC 启用 h.264 的简单方法。
WebRTC库提供了使用自定义编解码器的接口,但是,您需要自己编译它。
这里有更多信息:Google WebRTC 支持 Cisco Open H.264 吗?
还有这里:https://bloggeek.me/webrtc-h264-video-codec-hardware-support/
目前Android对WebRTC的使用仅支持硬件H.264解码和编码,并且仅限于某些芯片组。
因此,如果设备不支持硬件 H.264 或具有不受支持的芯片组,您将只能使用 VP8 或 VP9。支持的芯片组仅限于 OMX.qcom。和OMX.Exynos.,不支持的需要手动添加。
您可以重写名为“CustomVideoDecoderFactory”和“CustomVideoEncoderFactory”的类来强制 Android 使用 H.264。
如: 在此输入图片描述
您可以使用:wrappedVideoDecoderFactory.getSupportedCodecs()来检查您的手机是否支持H.264。
这是我的 github 存储库,我覆盖这些并重新运行“pub install”,现在它对我有用:https://github.com/hoooooouzx/flutter_webrtc-0.9.48-hotfix-customcodec/blob/main/android /src/main/java/org/webrtc/video/CustomVideoDecoderFactory.java