android - Chrome Android 未使用 SDP 提供的所有编解码器选项

标签 android google-chrome webrtc h.264 sdp

当我运行 RTCRtpSender.getCapabilities("video").codecs;在 Chrome Android 上,它包括 H264。但是,我运行 var offer = RTCPeerConnection.createOffer()看看offer.sdp它有时只会在报价中包含 H264。这导致我使用需要 H264 的应用程序出现问题 - 由于拒绝那些不包含 H264 的报价,它的工作方式不一致,而且我不知道如何强制 SDP 报价包含它。如何确定 createOffer包括所有可用的编解码器?我宁愿不必对 SDP 进行任何手动编辑。

最佳答案

我一直面临着同样的问题。正如 Pedro Vergara 评论的那样,它看起来像是最近版本的 Chrome Android 中引入的一个错误。现在,我通过继续调用 RTCRtpSender.getCapabilities('video') 做了一个简单的解决方法。直到它列出预期的 H.264 编解码器支持,然后再尝试创建 SDP 报价。像这样的东西:

console.log('Waiting for H.264 codec support');
checkH264(20);

function checkH264(count) {
  if (count > 0) {
    console.log('Getting video codec capabilities');
    let capabilities = JSON.stringify(RTCRtpSender.getCapabilities('video').codecs);
    console.log(capabilities);
    if (capabilities.toLowerCase().includes('video/h264')) {
      console.log('H.264 support found. Ready to proceed now! =)');
      // Proceed to SDP offer creation...
    } else {
      setTimeout(checkH264, 1000, count - 1);
    }
  } else {
    console.warn('H.264 support not found');
    // Proceed with caution. SDP offer may not contain H.264...
  }
}

请注意,上面的代码通过使用 setTimeout() 为 Chrome 提供了一些时间来使 H.264 可用。 .只需调用RTCRtpSender.getCapabilities('video')两次或多次没有真正等待可能行不通。

关于android - Chrome Android 未使用 SDP 提供的所有编解码器选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61967468/

相关文章:

javascript - Android 浏览器触摸事件位置

javascript - 如何将插入符号设置为 contentEditable 元素中新添加的元素?

css - 有什么方法可以修复 Chrome 中的 CSS3 内容属性闪烁?

javascript - JSFiddle 示例可以运行,但不能在 GitHub 页面上运行

android - WebRTC 如何修改我的视频分辨率?

java - 简单的安卓天气应用

安卓手机作为专用设备

Android工作室AVD错误

javascript - 如何在 javascript 中获取 chrome 性能指标

javascript - WebRTC连接随机无音频输出