You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android平台GeckoView/Firefox的WebRTC是否支持AV1与H264编码?

在GeckoView中启用WebRTC的H264/AV1编码

问题背景

在Android 12设备上使用GeckoView 107.0.20221110173214实现WebRTC功能时,调用以下代码仅能识别VP8、VP9编码,无法检测到H264/AV1:

new RTCPeerConnection().createOffer({offerToReceiveVideo: true}).then(s => console.log(s.sdp))

相同代码在Chromium WebView中可正常识别H264/AV1,且Firefox官方应用测试也出现同样的无H264/AV1问题,测试页面显示H264不支持。

解决方案

启用H264编码

  1. 使用带专利编解码器的GeckoView变体
    GeckoView默认版本不包含H264编解码器(受专利授权限制),需在项目依赖中替换为带openh264后缀的版本,例如:
dependencies {
    implementation 'org.mozilla.geckoview:geckoview-openh264:107.0.20221110173214'
}
  1. 配置GeckoRuntime偏好
    初始化GeckoRuntime时,开启H264相关开关:
val runtimeSettings = GeckoRuntimeSettings.Builder()
    .preference("media.peerconnection.video.h264_enabled", true)
    .preference("media.navigator.video.h264.enabled", true)
    .build()
val geckoRuntime = GeckoRuntime.create(context, runtimeSettings)

启用AV1编码

  1. 版本与硬件要求
    AV1支持需要GeckoView版本≥100,且设备硬件需支持AV1编解码(Android 12部分设备原生支持,需确认设备规格)。

  2. 配置GeckoRuntime偏好
    添加AV1相关启用配置:

val runtimeSettings = GeckoRuntimeSettings.Builder()
    .preference("media.peerconnection.video.av1_enabled", true)
    .preference("media.navigator.video.av1.enabled", true)
    .preference("media.av1.enabled", true)
    .build()
val geckoRuntime = GeckoRuntime.create(context, runtimeSettings)

验证

修改配置后重新运行应用,调用原WebRTC代码查看SDP内容,若出现m=video ... H264或m=video ... AV1的条目,说明编码已启用;再次测试目标页面,确认H264支持状态更新。

内容的提问来源于stack exchange,提问作者alexward1230

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 00:45:14