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

问题描述 投票:2回答:1

[当我在Chrome Android上运行RTCRtpSender.getCapabilities("video").codecs;时,它包含H264。但是,我运行var offer = RTCPeerConnection.createOffer(),然后查看offer.sdp,该报价有时仅包含H264。这使我遇到了需要H264的应用程序的问题-由于拒绝了不包含H264的那些提议,因此它的工作不一致,而且我不知道如何强制SDP提议包括它。如何确定createOffer包括所有可用的编解码器?我希望不必对SDP进行任何手动编辑。

android google-chrome webrtc h.264 sdp
1个回答
0
投票

我一直面临着同样的问题。正如Pedro Vergara所说,它看起来像是在最新版本的Chrome Android中引入的错误。现在,我做了一个简单的解决方法,即在尝试创建SDP产品之前,一直调用RTCRtpSender.getCapabilities('video')直到列出期望的H.264编解码器支持。像这样的东西:

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...
  }
}

[注意,以上代码为Chrome提供了一些时间,可以使用setTimeout()来启用H.264。仅呼叫RTCRtpSender.getCapabilities('video')两次或更多次而没有真正等待可能无法正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.