pion / webrtc

Pure Go implementation of the WebRTC API
https://pion.ly
MIT License
13.06k stars 1.6k forks source link

Support mDNS candidates #699

Closed adwpc closed 5 years ago

adwpc commented 5 years ago

Your environment.

What did you do?

I'm testing my github.com/pion/ion project, There is a error when sfu SetRemoteDescription err=sdp: invalid syntax c=IN IP4 2cf85dc7-5ba6-424c-bde4-bd6084bcdcb3.local

v=0
o=- 6642283912995850893 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=msid-semantic: WMS wV9dmXqu8VEg8Sz3wPEkpoZOCYisDZ40Jv2t
m=audio 54842 UDP/TLS/RTP/SAVPF 111 103 104 9 0 8 106 105 13 110 112 113 126
c=IN IP4 2cf85dc7-5ba6-424c-bde4-bd6084bcdcb3.local
a=rtcp:9 IN IP4 0.0.0.0
a=candidate:328666875 1 udp 2113937151 2cf85dc7-5ba6-424c-bde4-bd6084bcdcb3.local 54842 typ host generation 0 network-cost 999
a=ice-ufrag:RFjo
a=ice-pwd:CU/LPJScv9qFZ+K2Q4zVfMVw
a=ice-options:trickle
a=fingerprint:sha-256 68:A3:D7:1E:37:49:2E:0F:98:BE:45:74:86:86:2E:70:6F:10:11:0F:93:D0:1E:B6:76:F6:F4:3F:13:BB:94:5C
a=setup:actpass
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level
a=extmap:2 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendonly
a=msid:wV9dmXqu8VEg8Sz3wPEkpoZOCYisDZ40Jv2t dd287fc1-0e63-4c21-a34d-375793e4331d
a=rtcp-mux
a=rtpmap:111 opus/48000/2
a=rtcp-fb:111 transport-cc
a=fmtp:111 minptime=10;useinbandfec=1
a=rtpmap:103 ISAC/16000
a=rtpmap:104 ISAC/32000
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:106 CN/32000
a=rtpmap:105 CN/16000
a=rtpmap:13 CN/8000
a=rtpmap:110 telephone-event/48000
a=rtpmap:112 telephone-event/32000
a=rtpmap:113 telephone-event/16000
a=rtpmap:126 telephone-event/8000
a=ssrc:3615033303 cname:498bLKiJMDMNZ255
a=ssrc:3615033303 msid:wV9dmXqu8VEg8Sz3wPEkpoZOCYisDZ40Jv2t dd287fc1-0e63-4c21-a34d-375793e4331d
a=ssrc:3615033303 mslabel:wV9dmXqu8VEg8Sz3wPEkpoZOCYisDZ40Jv2t
a=ssrc:3615033303 label:dd287fc1-0e63-4c21-a34d-375793e4331d
m=video 63219 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 122 127 121 125 107 108 109 124 120 123 119 114 115 116
c=IN IP4 2cf85dc7-5ba6-424c-bde4-bd6084bcdcb3.local
a=rtcp:9 IN IP4 0.0.0.0
a=candidate:328666875 1 udp 2113937151 2cf85dc7-5ba6-424c-bde4-bd6084bcdcb3.local 63219 typ host generation 0 network-cost 999
a=ice-ufrag:RFjo
a=ice-pwd:CU/LPJScv9qFZ+K2Q4zVfMVw
a=ice-options:trickle
a=fingerprint:sha-256 68:A3:D7:1E:37:49:2E:0F:98:BE:45:74:86:86:2E:70:6F:10:11:0F:93:D0:1E:B6:76:F6:F4:3F:13:BB:94:5C
a=setup:actpass
a=mid:1
a=extmap:14 urn:ietf:params:rtp-hdrext:toffset
a=extmap:13 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time
a=extmap:12 urn:3gpp:video-orientation
a=extmap:2 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01
a=extmap:11 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay
a=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type
a=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing
a=extmap:8 http://tools.ietf.org/html/draft-ietf-avtext-framemarking-07
a=extmap:9 http://www.webrtc.org/experiments/rtp-hdrext/color-space
a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:4 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:5 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendonly
a=msid:wV9dmXqu8VEg8Sz3wPEkpoZOCYisDZ40Jv2t ebd55719-3144-42bc-895d-55d5fd580c58
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 VP9/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 profile-id=2
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=1;profile-level-id=42001f
a=rtpmap:122 rtx/90000
a=fmtp:122 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=0;profile-level-id=42001f
a=rtpmap:121 rtx/90000
a=fmtp:121 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=1;profile-level-id=42e01f
a=rtpmap:107 rtx/90000
a=fmtp:107 apt=125
a=rtpmap:108 H264/90000
a=rtcp-fb:108 goog-remb
a=rtcp-fb:108 transport-cc
a=rtcp-fb:108 ccm fir
a=rtcp-fb:108 nack
a=rtcp-fb:108 nack pli
a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
a=rtpmap:109 rtx/90000
a=fmtp:109 apt=108
a=rtpmap:124 H264/90000
a=rtcp-fb:124 goog-remb
a=rtcp-fb:124 transport-cc
a=rtcp-fb:124 ccm fir
a=rtcp-fb:124 nack
a=rtcp-fb:124 nack pli
a=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d0032
a=rtpmap:120 rtx/90000
a=fmtp:120 apt=124
a=rtpmap:123 H264/90000
a=rtcp-fb:123 goog-remb
a=rtcp-fb:123 transport-cc
a=rtcp-fb:123 ccm fir
a=rtcp-fb:123 nack
a=rtcp-fb:123 nack pli
a=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=640032
a=rtpmap:119 rtx/90000
a=fmtp:119 apt=123
a=rtpmap:114 red/90000
a=rtpmap:115 rtx/90000
a=fmtp:115 apt=114
a=rtpmap:116 ulpfec/90000
a=ssrc-group:FID 4249394130 1657859493
a=ssrc:4249394130 cname:498bLKiJMDMNZ255
a=ssrc:4249394130 msid:wV9dmXqu8VEg8Sz3wPEkpoZOCYisDZ40Jv2t ebd55719-3144-42bc-895d-55d5fd580c58
a=ssrc:4249394130 mslabel:wV9dmXqu8VEg8Sz3wPEkpoZOCYisDZ40Jv2t
a=ssrc:4249394130 label:ebd55719-3144-42bc-895d-55d5fd580c58
a=ssrc:1657859493 cname:498bLKiJMDMNZ255
a=ssrc:1657859493 msid:wV9dmXqu8VEg8Sz3wPEkpoZOCYisDZ40Jv2t ebd55719-3144-42bc-895d-55d5fd580c58
a=ssrc:1657859493 mslabel:wV9dmXqu8VEg8Sz3wPEkpoZOCYisDZ40Jv2t
a=ssrc:1657859493 label:ebd55719-3144-42bc-895d-55d5fd580c58`

What did you expect?

Hope to fix

What happened?

answer err=sdp: invalid syntax c=IN IP4 2cf85dc7-5ba6-424c-bde4-bd6084bcdcb3.local

Sean-Der commented 5 years ago

Aye nice catch @adwpc

I will work on getting mDNS candidates working. I don't know how hard it will be, hopefully not a big issue!

Sean-Der commented 5 years ago

Janus solved this with https://github.com/meetecho/janus-gateway/commit/0a5f379ad3bc521718cd0fb90e3008a09837baff

We should update our parsing to handle this candidate type, and we can have pion/ice actually do the resolving.

Sean-Der commented 5 years ago

Hey @adwpc

When you get a chance mind trying out https://github.com/pion/webrtc/pull/722 ?

I also added you on all the PRs, this is working for me locally. But this is quite a lot of code, plenty of chances for things to break :)

Sean-Der commented 5 years ago

This is implemented in v2.0.23 and and support landed in ice@v0.4.0 and sdp@v2.2.0!