Closed FourLeafTec closed 3 years ago
我想问题应该出在 Windows 10 发起呼叫
最好的办法是编译一个带debug 信息的libwebrtc.dll 库,使用vs 2019 启动原生调试,应该不会是大问题,很早的时候这个库就可以正常运行.
会不会是 rtc_peerconnection_impl.cc#L442 这段只把video description给到了webrtc库 而我观察到应答那边pc.onIceCandidate看上去像是连上一个才会给回调下一个,而上来给到的是个audio的candidate,然后就不再回调了
我对内部细节不是很熟,可以的话希望能给我一个调试思路
使用本项目里的代码未做任何修改对吧。
对,win10 to win10的没做修改
我已经定位问题,尝试修复中.
问题可能出现在windows 插件暂时未实现unified-plan 有关,当前windows 插件必须默认使用plan-b 发出offer,你可以尝试将windows 以外都设置成plan-b 检查是否可以正常通讯
非常抱歉近期可能没有足够的时间对plan-b进行测试了,pc这边我用web build外边加electron提交方案了 稍晚一段时间完成初步阶段后,会回来进行尝试 希望到时候能看到你那边的修复也完成了
在这个issue里额外提一个问题, 针对WIndows插件,我看demo和插件的C实现里对constraints都实现了一个叫optional的object,个人感觉这个部分似乎是advanced_constraints,是这样子么? 另外对optional basic constraints段的deviceId和mandatory段的sourceId似乎也是没有支持的感觉
我的工作里设备选择是必须的部分,另外因为只有三名开发人员,尽量希望多端统一,考虑Windows原生实现这块底层工作会比较多,所以也没敢选Windows原生实现,后续有机会的话也希望能对Windows原生实现这部分做出贡献
祝好运,稍后再见,这个issue我这边暂时挂起了
flutter web + electron 确实是当前最快捷稳定的方式支持desktop
此插件最难的部分就是编写libwebrtc来支持windows/linux,由于webrtc source 编译出来的都是大量静态库,这些库没办法堆放在flutter-webrtc 中,这将导致库(静态.lib 压缩后200Mb+)得非常臃肿,下载安装都会变得困难,另google 官方的库编译出来依赖特定版本的libstdc++,因此无法做到任意环境下使用,因此不得不创建了libwebrtc 动态库(编译后仅12Mb)项目,这块库需要对现有webrtc 所有api 进行重新封装,导出无须依赖libstdc++的接口, 因此需要非常多的工作在libwebrtc 库上。
在这个issue里额外提一个问题, 针对WIndows插件,我看demo和插件的C实现里对constraints都实现了一个叫optional的object,个人感觉这个部分似乎是advanced_constraints,是这样子么? 另外对optional basic constraints段的deviceId和mandatory段的sourceId似乎也是没有支持的感觉
当前libwebrtc 只做了最基本api,还需要大量的PR,例如unfied-plan, RTCConfiguration 等等。
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
Windows 10呼叫平台都失败 在最新flutter-webrtc-plugin 上有修复么?
@cloudwebrtc平台Windows 10 呼叫的问题 ,发现双方的udp 服务已开启,但是 发起方的udp socket 没有发送验证和数据请求
过程有点复杂,我有点担心自己的英文描述不清楚,先中文描述了,如果需要英文开发者处理的话我再尝试用英文描述一遍
在对demo做多平台测试,环境方面使用两台Windows 10,一台x86的macMini,两台Android,分别并且分别在win10和mac上启动chrome浏览器做web测试,所有被测设备及flutter-webrtc-server处于同一个Wifi下, 使用检出的版本,现象如下:
查看状态变化日志及chrome://webrtc-internals控制台检查后,做出猜测,简单尝试给部分动作添加Future.delay包裹
目前win10呼叫win10始终无法成功
现象非常的怪异,如果方便的话,希望能先帮我找到win10呼叫win10的失败原因,并且解决一下,这样我就能做这个选型了
附日志如下:
``` Launching lib\main.dart on Windows in debug mode... Building Windows application... Debug service listening on ws://127.0.0.1:58860/-E5SG4DaPj8=/ws Syncing files to device Windows... flutter: connect to https://172.16.10.180:8086/ws flutter: getTurnCredential: Allow self-signed certificate => 172.16.10.180:8086. flutter: getTurnCredential:response => {"username":"1616561656:flutter-webrtc","password":"LD8RnCDEg1bC/QU29J90tfaE2GA","ttl":86400,"uris":["turn:172.16.10.180:19303?transport=udp","turn:172.16.10.180:19302?transport=tcp"]} . flutter: SimpleWebSocket: Allow self-signed certificate => 172.16.10.180:8086. flutter: onOpen flutter: send: {"type":"new","data":{"name":"DESKTOP-DN34BSV(windows)","id":"073716","user_agent":"flutter-webrtc/windows-plugin 0.0.1"}} flutter: Received data: {"type":"peers","data":[{"id":"180","name":"DESKTOP-71LI36L(windows)","user_agent":"flutter-webrtc/windows-plugin 0.0.1"},{"id":"073716","name":"DESKTOP-DN34BSV(windows)","user_agent":"flutter-webrtc/windows-plugin 0.0.1"},{"id":"admin12345678-m","name":"localhost(android)","user_agent":"flutter-webrtc/android-plugin 0.0.1"}]} flutter: {iceServers: [{urls: turn:172.16.10.180:19303?transport=udp, username: 1616561656:flutter-webrtc, credential: LD8RnCDEg1bC/QU29J90tfaE2GA}]} flutter: signaling state:RTCSignalingState.RTCSignalingStateHaveLocalOffer flutter: send: {"type":"offer","data":{"to":"180","from":"073716","description":{"sdp":"v=0\r\no=- 3623022519663236880 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE audio video\r\na=msid-semantic: WMS\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 102 0 8 106 105 13 110 112 113 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:tcIk\r\na=ice-pwd:BnRH15RPtsO6hP+ix4mvKgQw\r\na=ice-options:trickle\r\na=fingerprint:sha-256 63:AE:C2:EC:21:D9:B5:9E:E5:56:96:F9:2A:A4:67:33:61:A0:4C:6E:8F:92:83:C8:1B:B5:1B:C0:09:CB:3A:D8\r\na=setup:actpass\r\na=mid:audio\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=recvonly\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:9 G722/8000\r\na=rtpmap:102 ILBC/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:106 CN/32000\r\na=rtpmap:105 CN/16000\r\na=rtpmap:13 CN/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpmap:112 telephone-event/32000\r\na=rtpmap:113 telephone-event/16000\r\na=rtpmap:126 telephone-event/8000\r\nm=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 127 122 125 121 124 107 108 109 123\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:tcIk\r\na=ice-pwd:BnRH15RPtsO6hP+ix4mvKgQw\r\na=ice-options:trickle\r\na=fingerprint:sha-256 63:AE:C2:EC:21:D9:B5:9E:E5:56:96:F9:2A:A4:67:33:61:A0:4C:6E:8F:92:83:C8:1B:B5:1B:C0:09:CB:3A:D8\r\na=setup:actpass\r\na=mid:video\r\na=extmap:2 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:4 urn:3gpp:video-orientation\r\na=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:10 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07\r\na=recvonly\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\na=rtpmap:98 VP9/90000\r\na=rtcp-fb:98 goog-remb\r\na=rtcp-fb:98 transport-cc\r\na=rtcp-fb:98 ccm fir\r\na=rtcp-fb:98 nack\r\na=rtcp-fb:98 nack pli\r\na=fmtp:98 profile-id=0\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:100 H264/90000\r\na=rtcp-fb:100 goog-remb\r\na=rtcp-fb:100 transport-cc\r\na=rtcp-fb:100 ccm fir\r\na=rtcp-fb:100 nack\r\na=rtcp-fb:100 nack pli\r\na=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:127 H264/90000\r\na=rtcp-fb:127 goog-remb\r\na=rtcp-fb:127 transport-cc\r\na=rtcp-fb:127 ccm fir\r\na=rtcp-fb:127 nack\r\na=rtcp-fb:127 nack pli\r\na=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f\r\na=rtpmap:122 rtx/90000\r\na=fmtp:122 apt=127\r\na=rtpmap:125 H264/90000\r\na=rtcp-fb:125 goog-remb\r\na=rtcp-fb:125 transport-cc\r\na=rtcp-fb:125 ccm fir\r\na=rtcp-fb:125 nack\r\na=rtcp-fb:125 nack pli\r\na=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:121 rtx/90000\r\na=fmtp:121 apt=125\r\na=rtpmap:124 H264/90000\r\na=rtcp-fb:124 goog-remb\r\na=rtcp-fb:124 transport-cc\r\na=rtcp-fb:124 ccm fir\r\na=rtcp-fb:124 nack\r\na=rtcp-fb:124 nack pli\r\na=fmtp:124 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f\r\na=rtpmap:107 rtx/90000\r\na=fmtp:107 apt=124\r\na=rtpmap:108 red/90000\r\na=rtpmap:109 rtx/90000\r\na=fmtp:109 apt=108\r\na=rtpmap:123 ulpfec/90000\r\n","type":"offer"},"session_id":"073716-180","media":"video"}} flutter: gather state:RTCIceGatheringState.RTCIceGatheringStateGathering flutter: candidate]]]]]]]]]]]]]:candidate:3717615912 1 udp 2122260223 192.168.200.166 61713 typ host generation 0 ufrag tcIk network-id 2 network-cost 50 flutter: candidate]]]]]]]]]]]]]:candidate:1447065330 1 udp 2122194687 172.16.10.163 61714 typ host generation 0 ufrag tcIk network-id 1 flutter: candidate]]]]]]]]]]]]]:candidate:3717615912 1 udp 2122260223 192.168.200.166 61715 typ host generation 0 ufrag tcIk network-id 2 network-cost 50 flutter: send: {"type":"candidate","data":{"to":"180","from":"073716","candidate":{"sdpMLineIndex":1,"sdpMid":"video","candidate":"candidate:3717615912 1 udp 2122260223 192.168.200.166 61715 typ host generation 0 ufrag tcIk network-id 2 network-cost 50"},"session_id":"073716-180"}} flutter: candidate]]]]]]]]]]]]]:candidate:1447065330 1 udp 2122194687 172.16.10.163 61716 typ host generation 0 ufrag tcIk network-id 1 flutter: send: {"type":"candidate","data":{"to":"180","from":"073716","candidate":{"sdpMLineIndex":1,"sdpMid":"video","candidate":"candidate:1447065330 1 udp 2122194687 172.16.10.163 61716 typ host generation 0 ufrag tcIk network-id 1"},"session_id":"073716-180"}} flutter: candidate]]]]]]]]]]]]]:candidate:2262204151 1 udp 41819903 172.16.10.180 58466 typ relay raddr 172.16.10.163 rport 61714 generation 0 ufrag tcIk network-id 1 flutter: candidate]]]]]]]]]]]]]:candidate:2262204151 1 udp 41819903 172.16.10.180 58467 typ relay raddr 172.16.10.163 rport 61716 generation 0 ufrag tcIk network-id 1 flutter: send: {"type":"candidate","data":{"to":"180","from":"073716","candidate":{"sdpMLineIndex":1,"sdpMid":"video","candidate":"candidate:2262204151 1 udp 41819903 172.16.10.180 58467 typ relay raddr 172.16.10.163 rport 61716 generation 0 ufrag tcIk network-id 1"},"session_id":"073716-180"}} flutter: Received data: {} flutter: Received data: {} flutter: Received data: {"type":"answer","data":{"to":"073716","from":"180","description":{"sdp":"v=0\r\no=- 549949327756781945 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE audio video\r\na=msid-semantic: WMS 85D5544E-D96C-480C-B8FA-92EE672D0880\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 103 104 9 102 0 8 106 105 13 110 112 113 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:drYf\r\na=ice-pwd:KtzjSL8ocj+3IO0I3WvHTx3S\r\na=ice-options:trickle\r\na=fingerprint:sha-256 2B:2D:2F:60:F4:3A:84:25:85:E8:01:AE:A9:80:85:C4:A5:D0:1A:B9:57:EA:79:3A:85:DB:65:6D:1C:58:FF:2E\r\na=setup:active\r\na=mid:audio\r\na=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=sendonly\r\na=rtcp-mux\r\na=rtpmap:111 opus/48000/2\r\na=rtcp-fb:111 transport-cc\r\na=fmtp:111 minptime=10;useinbandfec=1\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:9 G722/8000\r\na=rtpmap:102 ILBC/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:106 CN/32000\r\na=rtpmap:105 CN/16000\r\na=rtpmap:13 CN/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpmap:112 telephone-event/32000\r\na=rtpmap:113 telephone-event/16000\r\na=rtpmap:126 telephone-event/8000\r\na=ssrc:1753353405 cname:NmTG6gZ2yYMQpCWb\r\na=ssrc:1753353405 msid:85D5544E-D96C-480C-B8FA-92EE672D0880 8B0DA547-A311-475E-BB13-6640C41358C2\r\na=ssrc:1753353405 mslabel:85D5544E-D96C-480C-B8FA-92EE672D0880\r\na=ssrc:1753353405 label:8B0DA547-A311-475E-BB13-6640C41358C2\r\nm=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 127 122 125 121 124 107 108 109 123\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:drYf\r\na=ice-pwd:KtzjSL8ocj+3IO0I3WvHTx3S\r\na=ice-options:trickle\r\na=fingerprint:sha-256 2B:2D:2F:60:F4:3A:84:25:85:E8:01:AE:A9:80:85:C4:A5:D0:1A:B9:57:EA:79:3A:85:DB:65:6D:1C:58:FF:2E\r\na=setup:active\r\na=mid:video\r\na=extmap:2 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:4 urn:3gpp:video-orientation\r\na=extmap:5 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:10 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07\r\na=sendonly\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=rtcp-fb:96 goog-remb\r\na=rtcp-fb:96 transport-cc\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 nack\r\na=rtcp-fb:96 nack pli\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=96\r\na=rtpmap:98 VP9/90000\r\na=rtcp-fb:98 goog-remb\r\na=rtcp-fb:98 transport-cc\r\na=rtcp-fb:98 ccm fir\r\na=rtcp-fb:98 nack\r\na=rtcp-fb:98 nack pli\r\na=fmtp:98 profile-id=0\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:100 H264/90000\r\na=rtcp-fb:100 goog-remb\r\na=rtcp-fb:100 transport-cc\r\na=rtcp-fb:100 ccm fir\r\na=rtcp-fb:100 nack\r\na=rtcp-fb:100 nack pli\r\na=fmtp:100 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:127 H264/90000\r\na=rtcp-fb:127 goog-remb\r\na=rtcp-fb:127 transport-cc\r\na=rtcp-fb:127 ccm fir\r\na=rtcp-fb:127 nack\r\na=rtcp-fb:127 nack pli\r\na=fmtp:127 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42001f\r\na=rtpmap:122 rtx/90000\r\na=fmtp:122 apt=127\r\na=rtpmap:125 H264/90000\r\na=rtcp-fb:125 goog-remb\r\na=rtcp-fb:125 transport-cc\r\na=rtcp-fb:125 ccm fir\r\na=rtcp-fb:125 nack\r\na=rtcp-fb:125 nack pli\r\na=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:121 rtx/90000\r\na=fmtp:121 apt=125\r\na=rtpmap:124 H264/90000\r\na=rtcp-fb:124 goog-remb\r\na=rtcp-fb:124 transport-cc\r\na=rtcp-fb:124 ccm fir\r\na=rtcp-fb:124 nack\r\na=rtcp-fb:124 nack pli\r\na=fmtp:124 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f\r\na=rtpmap:107 rtx/90000\r\na=fmtp:107 apt=124\r\na=rtpmap:108 red/90000\r\na=rtpmap:109 rtx/90000\r\na=fmtp:109 apt=108\r\na=rtpmap:123 ulpfec/90000\r\na=ssrc-group:FID 1274675730 1813864954\r\na=ssrc:1274675730 cname:NmTG6gZ2yYMQpCWb\r\na=ssrc:1274675730 msid:85D5544E-D96C-480C-B8FA-92EE672D0880 5C880296-1A5E-486F-BF8E-910F0A530CC2\r\na=ssrc:1274675730 mslabel:85D5544E-D96C-480C-B8FA-92EE672D0880\r\na=ssrc:1274675730 label:5C880296-1A5E-486F-BF8E-910F0A530CC2\r\na=ssrc:1813864954 cname:NmTG6gZ2yYMQpCWb\r\na=ssrc:1813864954 msid:85D5544E-D96C-480C-B8FA-92EE672D0880 5C880296-1A5E-486F-BF8E-910F0A530CC2\r\na=ssrc:1813864954 mslabel:85D5544E-D96C-480C-B8FA-92EE672D0880\r\na=ssrc:1813864954 label:5C880296-1A5E-486F-BF8E-910F0A530CC2\r\n","type":"answer"},"session_id":"073716-180"}} flutter: signaling state:RTCSignalingState.RTCSignalingStateStable flutter: Received data: {"type":"candidate","data":{"to":"073716","from":"180","candidate":{"sdpMLineIndex":0,"sdpMid":"audio","candidate":"candidate:2262204151 1 udp 41819903 172.16.10.180 58472 typ relay raddr 0.0.0.0 rport 0 generation 0 ufrag drYf network-id 1"},"session_id":"073716-180"}} flutter: ice state:RTCIceConnectionState.RTCIceConnectionStateChecking flutter: on add stream:[Track(id: 8B0DA547-A311-475E-BB13-6640C41358C2, kind: audio, label: 8B0DA547-A311-475E-BB13-6640C41358C2, enabled: true, muted: false), Track(id: 5C880296-1A5E-486F-BF8E-910F0A530CC2, kind: video, label: 5C880296-1A5E-486F-BF8E-910F0A530CC2, enabled: true, muted: false)] flutter: Received data: {} flutter: Received data: {} flutter: Received data: {} flutter: Received data: {} flutter: Received data: {} flutter: Received data: {} flutter: gather state:RTCIceGatheringState.RTCIceGatheringStateComplete ```