Galène videoconferencing server discussion list archives
 help / color / mirror / Atom feed
* [Galene] Need explanation on protocol
@ 2024-07-22 17:37 Goffi
  0 siblings, 0 replies; only message in thread
From: Goffi @ 2024-07-22 17:37 UTC (permalink / raw)
  To: galene

[-- Attachment #1: Type: text/plain, Size: 7428 bytes --]

Hello,

I have an issue with implementing Galène API, I get the same ID for my upsteam and my downstream.

I'm using a "test" group, with 2 people: me and "Louise".

When I'm connecting, after handshake and joining, I'm sending my webcam and microphone stream with this offer:
```
{
  "type": "offer",
  "id": "06cf28c8-95b5-4c22-9444-1f0d4e5a2938",
  "label": "camera",
  "username": "goffi@tazar3.int",
  "sdp": "v=0\r\no=dGVzdEBjb25mZXJlbmNlcy50YXphcjMuaW50 1 1 IN IP4 0.0.0.0\r\ns=-\r\nt=0 0\r\na=msid-semantic:WMS *\r\na=ice-options:trickle\r\na=group:BUNDLE 0 1\r\nm=audio 9 UDP/TLS/RTP/SAVPF 109 9 0 8 101\r\nc=IN IP4 0.0.0.0\r\na=mid:0\r\na=sendonly\r\na=rtpmap:109 opus/48000/2\r\na=fmtp:109 maxplaybackrate=48000;stereo=1;useinbandfec=1\r\na=rtpmap:9 G722/8000/1\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:101 telephone-event/8000\r\na=rtcp-mux\r\na=fingerprint:sha-256 74:0A:8D:8E:4E:50:76:94:24:1A:AC:27:71:DE:5A:4C:DF:D6:A3:71:73:C7:43:21:89:4C:33:69:93:6C:BD:DA\r\na=setup:actpass\r\na=ice-ufrag:385525bf\r\na=ice-pwd:b5ae2310346b4459721ee23251c54bea\r\na=extmap:1/sendrecv urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2/recvonly urn:ietf:params:rtp-hdrext:csrc-audio-level\r\na=extmap:3/sendrecv urn:ietf:params:rtp-hdrext:sdes:mid\r\na=msid:{40c3b0d3-821d-418c-a181-84e9371e4ff5} {cd71e85b-3df1-45ae-b910-fb452874b3b2}\r\na=ssrc:3561614951 cname:{fc538774-d1f6-45fd-864d-1b5f8b465a0e}\r\na=ssrc:3561614951 msid:{40c3b0d3-821d-418c-a181-84e9371e4ff5} {cd71e85b-3df1-45ae-b910-fb452874b3b2}\r\nm=video 9 UDP/TLS/RTP/SAVPF 120 124 121 125 126 127 97 98 123 122 119\r\nc=IN IP4 0.0.0.0\r\na=mid:1\r\na=sendonly\r\na=rtpmap:120 VP8/90000\r\na=fmtp:120 max-fs=12288;max-fr=60\r\na=rtpmap:124 rtx/90000\r\na=fmtp:124 apt=120\r\na=rtpmap:121 VP9/90000\r\na=fmtp:121 max-fs=12288;max-fr=60\r\na=rtpmap:125 rtx/90000\r\na=fmtp:125 apt=121\r\na=rtpmap:126 H264/90000\r\na=fmtp:126 profile-level-id=42e01f;level-asymmetry-allowed=1;packetization-mode=1\r\na=rtpmap:127 rtx/90000\r\na=fmtp:127 apt=126\r\na=rtpmap:97 H264/90000\r\na=fmtp:97 profile-level-id=42e01f;level-asymmetry-allowed=1\r\na=rtpmap:98 rtx/90000\r\na=fmtp:98 apt=97\r\na=rtpmap:123 ulpfec/90000\r\na=rtpmap:122 red/90000\r\na=rtpmap:119 rtx/90000\r\na=fmtp:119 apt=122\r\na=rtcp-mux\r\na=fingerprint:sha-256 74:0A:8D:8E:4E:50:76:94:24:1A:AC:27:71:DE:5A:4C:DF:D6:A3:71:73:C7:43:21:89:4C:33:69:93:6C:BD:DA\r\na=setup:actpass\r\na=ice-ufrag:385525bf\r\na=ice-pwd:b5ae2310346b4459721ee23251c54bea\r\na=rtcp-fb:120 nack\r\na=rtcp-fb:120 nack pli\r\na=rtcp-fb:120 ccm fir\r\na=rtcp-fb:120 goog-remb\r\na=rtcp-fb:120 transport-cc\r\na=rtcp-fb:121 nack\r\na=rtcp-fb:121 nack pli\r\na=rtcp-fb:121 ccm fir\r\na=rtcp-fb:121 goog-remb\r\na=rtcp-fb:121 transport-cc\r\na=rtcp-fb:126 nack\r\na=rtcp-fb:126 nack pli\r\na=rtcp-fb:126 ccm fir\r\na=rtcp-fb:126 goog-remb\r\na=rtcp-fb:126 transport-cc\r\na=rtcp-fb:97 nack\r\na=rtcp-fb:97 nack pli\r\na=rtcp-fb:97 ccm fir\r\na=rtcp-fb:97 goog-remb\r\na=rtcp-fb:97 transport-cc\r\na=rtcp-fb:123 nack\r\na=rtcp-fb:123 nack pli\r\na=rtcp-fb:123 ccm fir\r\na=rtcp-fb:123 goog-remb\r\na=rtcp-fb:123 transport-cc\r\na=rtcp-fb:122 nack\r\na=rtcp-fb:122 nack pli\r\na=rtcp-fb:122 ccm fir\r\na=rtcp-fb:122 goog-remb\r\na=rtcp-fb:122 transport-cc\r\na=extmap:3/sendrecv urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:4/sendrecv http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:5/sendrecv urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:6/recvonly http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:7/sendrecv http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=msid:{40c3b0d3-821d-418c-a181-84e9371e4ff5} {80ca6be9-9f76-43cb-8811-d3cdabedb19d}\r\na=ssrc:601906545 cname:{fc538774-d1f6-45fd-864d-1b5f8b465a0e}\r\na=ssrc:601906545 msid:{40c3b0d3-821d-418c-a181-84e9371e4ff5} {80ca6be9-9f76-43cb-8811-d3cdabedb19d}\r\na=ssrc:74838004 cname:{fc538774-d1f6-45fd-864d-1b5f8b465a0e}\r\na=ssrc:74838004 msid:{40c3b0d3-821d-418c-a181-84e9371e4ff5} {80ca6be9-9f76-43cb-8811-d3cdabedb19d}\r\na=ssrc-group:FID 601906545 74838004\r\n"
}
```

Then I get ICE candidate, like this:
```
{
  "type": "ice",
  "id": "06cf28c8-95b5-4c22-9444-1f0d4e5a2938",
  "candidate": {
    "candidate": "candidate:3686584501 1 udp 1694498815 192.168.0.104 42730 typ srflx raddr 0.0.0.0 rport 42730",
    "sdpMid": "",
    "sdpMLineIndex": 0,
    "usernameFragment": null
  }
}
```

On my browser, I have a first RTCPeerConnection with this offer, and associated to ID `06cf28c8-95b5-4c22-9444-1f0d4e5a2938`.

Later on, when Louise is connecting to "test", Galène push this offer to me:
```
{
  "type": "offer",
  "id": "06cf28c8-95b5-4c22-9444-1f0d4e5a2938",
  "source": "jbrJum8oD7G57N36QrWVG2",
  "username": "goffi@tazar3.int",
  "sdp": "v=0\r\no=- 2998521111351734355 1721667972 IN IP4 0.0.0.0\r\ns=-\r\nt=0 0\r\na=msid-semantic:WMS*\r\na=fingerprint:sha-256 1C:E2:99:85:15:D0:D3:48:52:40:4E:ED:CB:18:D1:A1:DB:3A:3B:89:01:63:71:1E:12:26:B8:13:0D:98:D3:58\r\na=extmap-allow-mixed\r\na=group:BUNDLE 0 1\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111\r\nc=IN IP4 0.0.0.0\r\na=setup:actpass\r\na=mid:0\r\na=ice-ufrag:NRUWrotWqCoFACZw\r\na=ice-pwd:ITHqtfyBoldayQZvwZzanKOIbxCaOIsJ\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:111 opus/48000/2\r\na=fmtp:111 maxplaybackrate=48000;stereo=1;useinbandfec=1\r\na=ssrc:1510830843 cname:{40c3b0d3-821d-418c-a181-84e9371e4ff5}\r\na=ssrc:1510830843 msid:{40c3b0d3-821d-418c-a181-84e9371e4ff5} {cd71e85b-3df1-45ae-b910-fb452874b3b2}\r\na=ssrc:1510830843 mslabel:{40c3b0d3-821d-418c-a181-84e9371e4ff5}\r\na=ssrc:1510830843 label:{cd71e85b-3df1-45ae-b910-fb452874b3b2}\r\na=msid:{40c3b0d3-821d-418c-a181-84e9371e4ff5} {cd71e85b-3df1-45ae-b910-fb452874b3b2}\r\na=sendonly\r\nm=video 9 UDP/TLS/RTP/SAVPF 96\r\nc=IN IP4 0.0.0.0\r\na=setup:actpass\r\na=mid:1\r\na=ice-ufrag:NRUWrotWqCoFACZw\r\na=ice-pwd:ITHqtfyBoldayQZvwZzanKOIbxCaOIsJ\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:96 VP8/90000\r\na=fmtp:96 max-fs=12288;max-fr=60\r\na=rtcp-fb:96 nack \r\na=rtcp-fb:96 nack pli\r\na=rtcp-fb:96 ccm fir\r\na=rtcp-fb:96 goog-remb \r\na=rtcp-fb:96 transport-cc \r\na=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:2 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=ssrc:195987190 cname:{40c3b0d3-821d-418c-a181-84e9371e4ff5}\r\na=ssrc:195987190 msid:{40c3b0d3-821d-418c-a181-84e9371e4ff5} {80ca6be9-9f76-43cb-8811-d3cdabedb19d}\r\na=ssrc:195987190 mslabel:{40c3b0d3-821d-418c-a181-84e9371e4ff5}\r\na=ssrc:195987190 label:{80ca6be9-9f76-43cb-8811-d3cdabedb19d}\r\na=msid:{40c3b0d3-821d-418c-a181-84e9371e4ff5} {80ca6be9-9f76-43cb-8811-d3cdabedb19d}\r\na=sendonly\r\n",
  "label": "camera"
}
```

And then ICE candidates like this:
```
{
  "type": "ice",
  "id": "06cf28c8-95b5-4c22-9444-1f0d4e5a2938",
  "candidate": {
    "candidate": "candidate:3686584501 1 udp 1694498815 192.168.0.104 36399 typ srflx raddr 0.0.0.0 rport 36399",
    "sdpMid": "",
    "sdpMLineIndex": 0,
    "usernameFragment": null
  }
}
```

So I'm creating a second RTCPeerConnection to receive the stream of Louise.
But as you can see, the ID is the same, `06cf28c8-95b5-4c22-9444-1f0d4e5a2938`. I would have expected another one, as I don't know to which RtcPeerConnection I must assign the new ICE Candidates.

Did I do something wrong? Or have I misunderstood how to handle the streams and/or the protocol?

Any help/hint would be greatly appreciated.

Thanks!
Goffi

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-07-22 17:37 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-07-22 17:37 [Galene] Need explanation on protocol Goffi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox