Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chrome Android未在SDP中使用所有编解码器选项_Android_Google Chrome_Webrtc_H.264_Sdp - Fatal编程技术网

Chrome Android未在SDP中使用所有编解码器选项

Chrome Android未在SDP中使用所有编解码器选项,android,google-chrome,webrtc,h.264,sdp,Android,Google Chrome,Webrtc,H.264,Sdp,当我运行RTCRtpSender.getCapabilities(“视频”).codec时在Chrome Android上,它包括H264。但是,我运行var offer=rtpeerconnection.createOffer()并查看offer.sdp它有时只会在报价中包含H264。这给我带来了一个需要H264的应用程序的问题——由于拒绝了那些不包含H264的报价,它的工作方式不一致,我不知道如何强制SDP报价包含H264。如何确保createOffer包含所有可用的编解码器?我宁愿不必对S

当我运行
RTCRtpSender.getCapabilities(“视频”).codec时在Chrome Android上,它包括H264。但是,我运行
var offer=rtpeerconnection.createOffer()
并查看
offer.sdp
它有时只会在报价中包含H264。这给我带来了一个需要H264的应用程序的问题——由于拒绝了那些不包含H264的报价,它的工作方式不一致,我不知道如何强制SDP报价包含H264。如何确保
createOffer
包含所有可用的编解码器?我宁愿不必对SDP进行任何手动编辑。

我一直面临着同样的问题。正如Pedro Vergara评论的那样,它看起来像是Chrome Android最新版本中引入的一个bug。现在,我做了一个简单的解决方法,在尝试创建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...
  }
}

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

这也发生在我们身上,但是我们发现,H.264只是在您杀死安卓Chrome并要求提供可用的编解码器后第一次加载网站时丢失,即使是在
RTCRtpSender.getCapabilities('video').编解码器。在来回导航或F5'ing时,H.264始终显示。我们向Chromium团队报告了该漏洞,并正在等待响应。为什么不从另一个角度来解决这个问题呢?如果您仍然要处理流媒体,请生成一个远程服务,声明它是仅接收且仅支持h.264,然后在本地为该远程服务创建一个答案。在这种情况下,答案是强制包含h.264,如果它在平台上可用的话。如果可以的话,我会给你买一杯啤酒。几个小时以来,我一直在琢磨为什么h264的演员阵容不能与运行android 10的谷歌电视的Chromecast相媲美。