首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Web RTC重新协商错误

Web RTC重新协商错误
EN

Stack Overflow用户
提问于 2015-12-04 10:35:43
回答 1查看 2K关注 0票数 6

我已经设置了一个WebRTC应用程序,其工作方式如下:(从第5步开始,停止使用调用方/ CALLEE,因为调用方或CALLEE都可以启动流)

  1. 调用者只使用数据通道创建对等连接,创建报价,设置本地描述,并将报价发送给CALLEE。
  2. CALLEE设置远程描述,创建答案,设置本地描述,并将应答发送给调用方。
  3. 呼叫者设置远程描述。
  4. 呼叫者和CALLEE可以成功地通过数据通道进行通信。
  5. PEERA向对等连接添加音频和/或视频流。
  6. 佩拉在谈判中需要的事件火。
  7. PEERA创建报价,设置本地描述,并将报价发送给PEERB。
  8. PEERB接收报价,设置远程描述,创建应答,设置本地描述,并将答案发送给PEERA。

如果PEERA和PEERB都在使用Chrome:如果PEERA是调用者,那么一切都正常,PEERB成功地接收到了流。如果PEERA是CALLEE,那么PEERB在第8步设置本地描述时就会爆炸。该流由PEERB接收,但仅在发送到<video>元素时显示为黑匣子。

记录的错误是:

未能设置本地应答sdp:未能按下传输描述:未能为通道设置SSL角色。

当PEERA和PEERB都在使用FireFox时: PEERA可以是调用方,也可以是CALLEE,一切正常,并且PEERB成功地接收了流。

当CALLEE使用Firefox,调用者使用Chrome时: PEERA可以是调用者(Chrome),也可以是CALLEE(Firefox),一切正常,PEERB成功地接收到流。

当CALLEE使用Chrome而调用者使用FireFox时:如果PEERA是调用者(FireFox),那么一切都正常运行,PEERB(Chrome)成功地接收到了流。如果PEERA是CALLEE(Chrome),那么当设置远程描述时,PEERB(FireFox)在第8步就会崩溃。

记录的错误是:

DOMException InvalidSessionDescriptionError:“此时不支持重新启动(新的远程描述更改ice-ufrag或ice-pwd)ice-ufrag (旧):a59T34ixyZjsTuJice-ufrag(新):rsCN1ugVKHJJzmMbicePWD(旧):KqOHtqdzFp6VwG+3 3hxbjcQFcice D(新):uVvowvgsKIwuCq/bDmcGbSPA”代码:0 nsResul0: 0x0

EN

回答 1

Stack Overflow用户

发布于 2015-12-17 15:19:36

Chrome<->铬重新协商

当PEERA是重新协商中的被调用者时,您所得到的错误通常是由于Chrome更改了DTLS角色,但是I am 无法重现您的问题。我相信这个JSFiddle链接说明了您正在描述的场景,并且我能够成功地使用Chrome 47重新协商调用。

如果您仍然可以重现这个问题,请查看在“要约/答案”中生成的SDP的a=setup:位,并将它们与初始的“报价/答案”进行比较。如果我是对的,您将看到,首先,调用者将在报价中使用a=setup:actpass,而CALLEE将在回答中使用a=setup:active。这意味着调用方现在扮演的是“被动”DTLS角色,CALLEE扮演“主动”DTLS角色。

然后,当你开始重新谈判时,PEERA更有可能发送a=setup:actpass。应该发送a=setup:passive的PEERB正在发送a=setup:active,这实际上会导致DTLS角色交换。这个错误是因为Chrome不支持为对等连接更改DTLS角色。

有一个与此相关的在跟踪器上打开票证,在这里,我已经发布了您使用不同场景描述的问题的复制:启动一个视频专用电话,以及重新协商以添加video+audio。

目前我所知道的唯一解决方案是在调用setLocalDescription之前"munge“(修改) SDP,这样它就有了您想要的值。因此,例如,如果您要处理一个答案,并且您知道您是被动 DTLS角色,您可以这样做

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
answer.sdp = answer.sdp.replace('a=setup:active','a=setup:passive');
pc.setLocalDescription(answer).then(...);

Firefox<->火狐重新协商

是啊,一切都很好!这是因为Firefox在我运行的所有测试中重新协商DTLS角色时“做了正确的事情”。看看这些SDP和Chrome之间的区别。

Firefox<->Chrome重新协商互操作

I am能够重现您描述的问题,InvalidSessionDescriptionError出现在火狐中。我还没有想出一个解决办法,也不知道原因。

我还有很多其他的重新谈判的问题。现在真让人气馁。

如果您了解到更多信息,请回发。当然,在重新谈判的互操作中,仍有很多人在挣扎!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34095194

复制
相关文章
Perl正则表达式 模式匹配[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/142836.html原文链接:https://javaforall.cn
全栈程序员站长
2022/08/25
1.4K0
Java正则表达式匹配日期及基本使用
在 Java 中,\\ 表示:我要插入一个正则表达式的反斜线,所以其后的字符具有特殊的意义。
AlbertYang
2020/09/08
5.5K0
Java 14 instanceof 的模式匹配
本文是 Java 14 系列教程的其中一篇,本文主要讲述 InstanceOf 的模式匹配。
明明如月学长
2021/08/31
9220
正则表达式 - 简单模式匹配
        这里所用文本是《学习正则表达式》这本书带的,是《抒情歌谣集》(Lyrical Ballads, London, J.&A. Arch, 1798)中收录的塞缪尔·泰勒·柯勒律治的一首诗“The Rime of the Ancient” 的前几行。为了演示正则表达式的单行模式与多行模式,特意生成了带有换行符(ascii 10)的单个行,和不带换行符的多个行。
用户1148526
2023/05/01
8010
正则表达式 - 简单模式匹配
Java匹配中文的正则表达式
[\u4E00-\u9FA5]汉字﹐[\uFE30-\uFFA0]全角字符 [\u4E00-\u9FA5]汉字﹐[\uFE30-\uFFA0]全角字符所以说 ,Java的正则表达式是可以匹配中文字符的,同时,用中文字符来写表达式也是可以的.
大师级码师
2021/10/29
2.2K0
PHP中的正则表达式及模式匹配
PHP中对于正则处理文本提供了两种方式,一种是PCRE方式(PCRE库是一个实现了与perl 5在语法和语义上略有差异(详见下文)的正则表达式模式匹配功能的函数集. 当前的实现对应于perl 5.005.);另一个是POSIX方式。
大江小浪
2018/07/25
2.9K0
Java正则匹配空格_js正则表达式匹配空格
针对tab键带来的多个空格问题,有时候我们针对带空格的一行数据要进行切割,如果有多个空格就会出现就会切割空格出现,我们想把空格都去掉,所以需要用到某些方法。
全栈程序员站长
2022/11/09
11.1K0
Java 正则表达式匹配xml节点
xml内容: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3
小贝壳
2020/03/05
1.3K0
MySQL实践精华:sql正则表达式模式匹配
一个会写诗的程序员
2022/01/07
1K0
MySQL实践精华:sql正则表达式模式匹配
[Python]Python中使用正则表达式匹配
必须加# encoding: utf-8否则报错 SyntaxError: Non-ASCII character '\xe6' # encoding: utf-8 import re regex= ur"\d{4}" #正则表达式 if re.match(regex,"2020-2-02"): print 111 else: print 222 返回111
唯一Chat
2020/02/24
6070
scala 模式匹配的几个模式
Scala 的模式匹配是类似与正则匹配的的模式匹配,但是不仅仅如此,它还可以匹配对象的内在的构建形式.
Tim在路上
2020/08/04
1.2K0
模式匹配
如果在不设置全文搜索的情况下,如何过滤查询结果,您会选择哪种方法?LIKE也许是最容易想到的:
yzsDBA
2021/02/03
9810
Scala 的模式匹配
最近开始学习 Scala,相较于学习 Haskell 的过程来看,Scala 真是直观得多,友好得多,更容易上手。以前写过关于从熟悉的 Java 和 JavaScript 来逐步学习 Groovy 和 Haskell 的文章,这以后再来学习 Scala 的话,就可以不断比较了。如果和我一样有 Java 经验的话但是从来没有接触过 Scala 的话,建议先阅读这篇文章,A Scala Tutorial for Java Programmers,一边比较,一边熟悉,同时配套的还有这个,Scala for Java programmers – Joakim Ohlrogge & Enno Runne,Youtube 上的视频,很直观,然后再从 Scala 官网的文档上面逐步涉入。
四火
2022/07/19
9870
Scala 的模式匹配
模式匹配
匹配操作符(绑定操作符): =~、!~ =~检验匹配是否成功:result= var =~ /abc/;若在该字符串中找到了该模式,则返回非零值,即true,不匹配则返回false。
生信补给站
2020/08/06
1.7K0
正则表达式在密码强度匹配中的使用
  今天领导让我写几个正则表达式来对密码做强度验证,听到写正则表达式内心是这样的感觉(哈哈,三分钟搞定,今天又可以打鱼了)。需求如下:密码组成只能是数字,字母,英文可见半角符号,然后需要如下4个表达式:
用户2038589
2018/09/06
4K0
Java正则表达式匹配AABB、ABAB格式字符
我们开发过程中,经常用到正则表达式来匹配想要的字符串,或者从一段文本中提取想要的关键字,比如爬虫应用等。正则表达式是对字符串提取的一套规则,我们把这个规则用正则里面的特定语法表达出来,去匹配满足这个规则的字符串。正则表达式具有通用型,不仅java里面可以用,其他的语言也一样适用。
用户8236825
2023/03/27
8600
Emoji 的处理 - 使用正则表达式匹配所有 Emoji
遇到了 emoji 需要过滤的问题,而百度来百度去看到的文章基本都是老旧的,没有完整给出 emoji 的 Unicode 范围
子润先生
2021/06/09
10.1K0
JavaScript正则表达式的模式匹配教程,并且附带充足的实战代码
其实我写这篇文章的话,主要是想自己重新复习一遍正则表达式。我们也知道正则表达式在很多语言中都是通用的,所以学好这个好处很多。接下来,就跟我一起来学习一下正则表达式,从0到入门吧。
@零一
2021/01/29
1.4K0
正则表达式匹配
该文讲述了如何用正则表达式匹配包括‘.’和‘*’在内的正则表达式。‘.’表示任意一个字符,而‘*’表示它前面的字符可以出现任意次(包含0次)。该算法利用动态规划的思想,结合字符串和模式的特点,进行匹配。
用户1148830
2018/01/03
1.6K0
[剑指offer] 正则表达式匹配
请实现一个函数用来匹配包括’.’和’*’的正则表达式。模式中的字符’.’表示任意一个字符,而’*’表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a”和”ab*a”均不匹配
尾尾部落
2018/09/04
1.3K0

相似问题

使用模式和匹配的Java正则表达式

34

java中使用正则表达式的模式匹配

20

Java正则表达式模式匹配

21

Java正则表达式模式匹配

12

正则表达式模式匹配java

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文