9b9t服务器显示连接超时,在WebRTC中ICE连接失败

9b9t服务器显示连接超时,在WebRTC中ICE连接失败我们正在尝试将浏览器(客户端)与aiortc库(服务器,发送单个视频流)连接起来。目前,连接已成功建立(onsignalingstatechange稳定)。但是,媒体连接从未建立,因为ICE连接失败。这两台主机在同一个局域网上,并且已经验证了直接连接。使用的STUN服务器是STUN.l。谷歌:19302.在服务器上的日志如下:DEBUG:asyncio:Usingselector:Epol…

大家好,又见面了,我是你们的朋友全栈君。

我们正在尝试将浏览器(客户端)与aiortc库(服务器,发送单个视频流)连接起来。目前,连接已成功建立(on signalingstatechange稳定)。但是,媒体连接从未建立,因为ICE连接失败。这两台主机在同一个局域网上,并且已经验证了直接连接。使用的STUN服务器是STUN.l。谷歌:19302. 在

服务器上的日志如下:DEBUG:asyncio:Using selector: EpollSelector

DEBUG:ice:Connection(0) protocol(0) connection_made(<_selectordatagramtransport fd=”11″ read=”idle” write=”<idle,” bufsize=”0″>>)

DEBUG:ice:Connection(0) protocol(0) > (‘66.102.1.127′, 19302) Message(message_method=Method.BINDING, message_class=Class.REQUEST, transaction_id=b’\xb1\x1f\xdek(\x9c\x10\xe8\x86\xd1Wn’)

DEBUG:ice:Connection(0) protocol(0) < (‘66.102.1.127′, 19302) Message(message_method=Method.BINDING, message_class=Class.RESPONSE, transaction_id=b’\xb1\x1f\xdek(\x9c\x10\xe8\x86\xd1Wn’)

Raw messages:

SDP offer:

v=0

o=- 7142951019689507792 2 IN IP4 127.0.0.1

s=-

t=0 0

a=group:BUNDLE video

a=msid-semantic: WMS

m=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 123 127 122 125 107 108 109 124

c=IN IP4 0.0.0.0

a=rtcp:9 IN IP4 0.0.0.0

a=ice-ufrag:A5nH

a=ice-pwd:P0LIjOkkOl/wTtup5n1JA1mC

a=ice-options:trickle

a=fingerprint:sha-256 E3:8E:87:44:E8:D3:A7:02:C0:70:EA:D8:7F:84:F6:80:17:42:33:07:D8:C3:5D:44:FF:DC:25:4C:68:7E:09:19

a=setup:actpass

a=mid:video

a=extmap:2 urn:ietf:params:rtp-hdrext:toffset

a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time

a=extmap:4 urn:3gpp:video-orientation

a=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01

a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay

a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type

a=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/video-timing

a=extmap:10 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07

a=recvonly

a=rtcp-mux

a=rtcp-rsize

a=rtpmap:96 VP8/90000

a=rtcp-fb:96 goog-remb

a=rtcp-fb:96 transport-cc

a=rtcp-fb:96 ccm fir

a=rtcp-fb:96 nack

a=rtcp-fb:96 nack pli

a=rtpmap:97 rtx/90000

a=fmtp:97 apt=96

a=rtpmap:98 VP9/90000

a=rtcp-fb:98 goog-remb

a=rtcp-fb:98 transport-cc

a=rtcp-fb:98 ccm fir

a=rtcp-fb:98 nack

a=rtcp-fb:98 nack pli

a=fmtp:98 profile-id=0

a=rtpmap:99 rtx/90000

a=fmtp:99 apt=98

a=rtpmap:100 H264/90000

a=rtcp-fb:100 goog-remb

a=rtcp-fb:100 transport-cc

a=rtcp-fb:100 ccm fir

a=rtcp-fb:100 nack

a=rtcp-fb:100 nack pli

a=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f

a=rtpmap:101 rtx/90000

a=fmtp:101 apt=100

a=rtpmap:102 H264/90000

a=rtcp-fb:102 goog-remb

a=rtcp-fb:102 transport-cc

a=rtcp-fb:102 ccm fir

a=rtcp-fb:102 nack

a=rtcp-fb:102 nack pli

a=fmtp:102 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f

a=rtpmap:123 rtx/90000

a=fmtp:123 apt=102

a=rtpmap:127 H264/90000

a=rtcp-fb:127 goog-remb

a=rtcp-fb:127 transport-cc

a=rtcp-fb:127 ccm fir

a=rtcp-fb:127 nack

a=rtcp-fb:127 nack pli

a=fmtp:127 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f

a=rtpmap:122 rtx/90000

a=fmtp:122 apt=127

a=rtpmap:125 H264/90000

a=rtcp-fb:125 goog-remb

a=rtcp-fb:125 transport-cc

a=rtcp-fb:125 ccm fir

a=rtcp-fb:125 nack

a=rtcp-fb:125 nack pli

a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f

a=rtpmap:107 rtx/90000

a=fmtp:107 apt=125

a=rtpmap:108 red/90000

a=rtpmap:109 rtx/90000

a=fmtp:109 apt=108

a=rtpmap:124 ulpfec/90000

SDP answer:

v=0

o=- 3760099490 3760099490 IN IP4 0.0.0.0

s=-

t=0 0

a=group:BUNDLE video

a=msid-semantic:WMS *

m=video 36695 UDP/TLS/RTP/SAVPF 96 97 100 101 127 122

c=IN IP4 147.175.160.240

a=sendonly

a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time

a=mid:video

a=msid:25c4a009-f81c-4fe7-b811-a39c525da778 6ffba6fa-08fb-401f-9555-8df85942bd71

a=rtcp:9 IN IP4 0.0.0.0

a=rtcp-mux

a=ssrc-group:FID 461163217 873864728

a=ssrc:461163217 cname:{af4834d3-8db4-41cc-a9cd-6565cb8d82bd}

a=ssrc:873864728 cname:{af4834d3-8db4-41cc-a9cd-6565cb8d82bd}

a=rtpmap:96 VP8/90000

a=rtcp-fb:96 nack

a=rtcp-fb:96 nack pli

a=rtcp-fb:96 goog-remb

a=rtpmap:97 rtx/90000

a=fmtp:97 apt=96

a=rtpmap:100 H264/90000

a=rtcp-fb:100 nack

a=rtcp-fb:100 nack pli

a=rtcp-fb:100 goog-remb

a=fmtp:100 packetization-mode=1;level-asymmetry-allowed=1;profile-level-id=42001f

a=rtpmap:101 rtx/90000

a=fmtp:101 apt=100

a=rtpmap:127 H264/90000

a=rtcp-fb:127 nack

a=rtcp-fb:127 nack pli

a=rtcp-fb:127 goog-remb

a=fmtp:127 packetization-mode=1;level-asymmetry-allowed=1;profile-level-id=42e01f

a=rtpmap:122 rtx/90000

a=fmtp:122 apt=127

a=candidate:a2cdfa74ef4f12d00d150bfa588cf805 1 udp 2130706431 147.175.160.240 36695 typ host

a=candidate:237395b2276e331724a06e8dbed92f44 1 udp 1694498815 147.175.160.240 36695 typ srflx raddr 147.175.160.240 rport 36695

a=end-of-candidates

a=ice-ufrag:IHJz

a=ice-pwd:RNwQMxbAm2EjNIBxklFZKd

a=fingerprint:sha-256 9B:BB:E0:63:DE:5D:BC:1F:CC:A2:FA:FA:0B:29:EB:F1:46:24:D6:A4:E7:9C:B3:C1:50:9D:A3:FB:83:EC:74:2D

a=setup:active

{“candidate”:”candidate:1963203886 1 udp 2113937151 147.175.160.205 36583 typ host generation 0 ufrag A5nH network-cost 999″,”sdpMid”:”video”,”sdpMLineIndex”:0,”type”:”candidate”}

服务器代码:

^{pr2}$

前端代码(重要部分):var configuration = { iceServers: [

{urls: ‘stun:stun.l.google.com:19302’}]

};

this.pc = new RTCPeerConnection(configuration);

const offerOptions = {

offerToReceiveVideo: 1,

offerToReceiveAudio: 0

};

let offer = this.pc.createOffer(offerOptions);

offer.then(async value => {

await this.pc.setLocalDescription(value);

this.connection.send(JSON.stringify(value))

});

this.connection.onmessage = async event => {

let data = JSON.parse(event.data);

if (data) {

if (data.type === ‘offer’) {

await this.pc.setRemoteDescription(data);

await this.pc.setLocalDescription(await this.pc.createAnswer());

this.connection.send({ ‘desc’: this.pc.localDescription }.toString());

} else if (data.type === ‘answer’) {

await this.pc.setRemoteDescription(data);

}

}

};

this.pc.onnegotiationneeded = async () => {

await this.pc.setLocalDescription(await this.pc.createOffer());

this.connection.send({ ‘desc’: this.pc.localDescription }.toString());

};

this.pc.onicecandidate = (event) => {

if (event.candidate !== null) {

let data = JSON.parse(JSON.stringify(event.candidate));

data[‘type’] = ‘candidate’;

this.connection.send(JSON.stringify(data));

}

};

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/142822.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 《JavaScript 模式》读书笔记(8)— DOM和浏览器模式2

    四、长期运行脚本可能会注意到有时候浏览器会提示某个脚本已经运行了很长时间,是否应该停止该脚本。实际上无论要处理多么复杂的任务,都不希望应用程序发生上述事情。而且,如果该脚本的工作十分繁重,那么浏览器

  • 进程池及回掉函数[通俗易懂]

    进程池在说进程池之前先来说一个概念:数据共享数据共享1.进程间的通信应该尽量避免共享数据的方式2.进程间的数据是独立的,可以借助队列或管道实现通信,二者都是基于消息传递的。虽然进程间数据独立

  • 第38周星期四电话会议忙碌的一天

    第38周星期四电话会议忙碌的一天

  • SQL server2019安装教程[通俗易懂]

    下载必备由于安装文件太大,所以没有办法上传,各位就请自行下载安装步骤点击sql2019安装包选择基本浏览安装到指定的位置,点击安装下载下载完成之后就是这个界面,然后点击自定义选择下一步等待扫描完成后选择选择下一步之后再选择第一个“执行SQLSERVER2019的全新安装”,然后点击下一步勾选第一个接受条款,继续下一步在“实例功能”里面勾选你需要…

  • msyql多个or,and,

    msyql多个or,and,

  • 获取token

    今天咱们来说说怎么通过代码来获取token获得token的话首先会有甲方提供一些数据给你们类似于这种,token的入参和出参。接着咱们就可以写代码了。/** *获取token *@return */ publicStringgetToken(){ StringshortUrl=WEIXIN_SHORT_TOKEN; //这是一个token的入参url只是…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号