This message was deleted.
# helpdesk
s
This message was deleted.
h
Created local sdp(offer, when publish the video track):
Copy code
v=0
o=- 5823229336453791980 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0
a=extmap-allow-mixed
a=msid-semantic: WMS PA_ZwbMA6gwsbbi
m=video 9 UDP/TLS/RTP/SAVPF 96 97 35 36 98 99 100 101 127 122 125 121 124 107 108 109 123 120 114 115 116
c=IN IP4 0.0.0.0
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:xT6H
a=ice-pwd:bJdzVwPsVqzbbwSD0vBmajdm
a=ice-options:trickle
a=fingerprint:sha-256 2E:4E:D9:7E:59:70:A0:30:E7:15:CC:69:34:AD:0C:34:DB:FE:CE:A4:A2:50:12:B7:A6:D7:BA:84:4A:66:3A:80
a=setup:actpass
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 <http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time>
a=extmap:3 urn:3gpp:video-orientation
a=extmap:4 <http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01>
a=extmap:5 <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://www.webrtc.org/experiments/rtp-hdrext/color-space>
a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=sendonly
a=msid:PA_ZwbMA6gwsbbi 4be2b3e9-7baa-4075-bb75-c6b55e0bd9bf
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:35 AV1/90000
a=rtcp-fb:35 goog-remb
a=rtcp-fb:35 transport-cc
a=rtcp-fb:35 ccm fir
a=rtcp-fb:35 nack
a=rtcp-fb:35 nack pli
a=rtpmap:36 rtx/90000
a=fmtp:36 apt=35
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: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=42001f
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=42001f
a=rtpmap:121 rtx/90000
a=fmtp:121 apt=125
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=42e01f
a=rtpmap:107 rtx/90000
a=fmtp:107 apt=124
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:123 H265/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-id=120;profile-id=1;profile-space=0;tier-flag=0
a=rtpmap:120 rtx/90000
a=fmtp:120 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 2221504740 1316308789
a=ssrc:2221504740 cname:1guiifXI9pT229lr
a=ssrc:2221504740 msid:PA_ZwbMA6gwsbbi 4be2b3e9-7baa-4075-bb75-c6b55e0bd9bf
a=ssrc:1316308789 cname:1guiifXI9pT229lr
a=ssrc:1316308789 msid:PA_ZwbMA6gwsbbi 4be2b3e9-7baa-4075-bb75-c6b55e0bd9bf
Received remote sdp(answer by livekit):
Copy code
v=0
o=- 7437225389344299552 1688096144 IN IP4 0.0.0.0
s=-
t=0 0
a=fingerprint:sha-256 A7:89:CA:C5:C6:89:9D:B8:18:E8:00:43:7D:F6:00:BF:93:A4:40:D7:C0:00:0E:29:BA:D7:AC:80:09:2F:48:A0
a=ice-lite
a=extmap-allow-mixed
a=group:BUNDLE 0
m=video 9 UDP/TLS/RTP/SAVPF 124 108
c=IN IP4 0.0.0.0
a=setup:active
a=mid:0
a=ice-ufrag:QHrRjNHLoIKXQtYB
a=ice-pwd:GHbuZhGhaZCfMATczNdHtRlPqbyfrrVB
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:124 H264/90000
a=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
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=rtpmap:108 H264/90000
a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
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=extmap:4 <http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01>
a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid
a=recvonly
Created local sdp again, (
OnRenegotiationNeeded()
callback triggered, after removing the track from pc):
Copy code
v=0
o=- 5823229336453791980 3 IN IP4 127.0.0.1
s=-
t=0 0
a=extmap-allow-mixed
a=msid-semantic: WMS
m=video 0 UDP/TLS/RTP/SAVPF 96 97 35 36 98 99 100 101 127 122 125 121 124 107 108 109 123 120 114 115 116
c=IN IP4 169.254.83.107
a=rtcp:9 IN IP4 0.0.0.0
a=candidate:1691626629 1 udp 2122260223 169.254.83.107 53434 typ host generation 0 network-id 8 network-cost 50
a=candidate:3143976315 1 udp 2122199807 fdae:5d54:7d99::9526:61bc:9e61:85f9 53435 typ host generation 0 network-id 2
a=candidate:3594733067 1 udp 2122134271 fdae:5d54:7d99::956b:41d:4331:3103 53436 typ host generation 0 network-id 3
a=candidate:3293016977 1 udp 2122068735 fdae:5d54:7d99::d728:db91:9b8c:85fb 53437 typ host generation 0 network-id 4
a=candidate:36268794 1 udp 2122003199 fdae:5d54:7d99::eb2 53438 typ host generation 0 network-id 5
a=candidate:3708875704 1 udp 2121932543 192.168.99.32 53439 typ host generation 0 network-id 1
a=ice-ufrag:xT6H
a=ice-pwd:bJdzVwPsVqzbbwSD0vBmajdm
a=ice-options:trickle
a=fingerprint:sha-256 2E:4E:D9:7E:59:70:A0:30:E7:15:CC:69:34:AD:0C:34:DB:FE:CE:A4:A2:50:12:B7:A6:D7:BA:84:4A:66:3A:80
a=setup:actpass
a=mid:0
a=extmap:1 urn:ietf:params:rtp-hdrext:toffset
a=extmap:2 <http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time>
a=extmap:3 urn:3gpp:video-orientation
a=extmap:4 <http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01>
a=extmap:5 <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://www.webrtc.org/experiments/rtp-hdrext/color-space>
a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid
a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
a=inactive
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:35 AV1/90000
a=rtcp-fb:35 goog-remb
a=rtcp-fb:35 transport-cc
a=rtcp-fb:35 ccm fir
a=rtcp-fb:35 nack
a=rtcp-fb:35 nack pli
a=rtpmap:36 rtx/90000
a=fmtp:36 apt=35
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: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=42001f
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=42001f
a=rtpmap:121 rtx/90000
a=fmtp:121 apt=125
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=42e01f
a=rtpmap:107 rtx/90000
a=fmtp:107 apt=124
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:123 H265/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-id=120;profile-id=1;profile-space=0;tier-flag=0
a=rtpmap:120 rtx/90000
a=fmtp:120 apt=123
a=rtpmap:114 red/90000
a=rtpmap:115 rtx/90000
a=fmtp:115 apt=114
a=rtpmap:116 ulpfec/90000
Received the remote sdp from livekit:
Copy code
v=0
o=- 7437225389344299552 1688096145 IN IP4 0.0.0.0
s=-
t=0 0
a=fingerprint:sha-256 A7:89:CA:C5:C6:89:9D:B8:18:E8:00:43:7D:F6:00:BF:93:A4:40:D7:C0:00:0E:29:BA:D7:AC:80:09:2F:48:A0
a=ice-lite
a=extmap-allow-mixed
a=group:BUNDLE 0
m=video 9 UDP/TLS/RTP/SAVPF 124 108
c=IN IP4 0.0.0.0
a=setup:active
a=mid:0
a=ice-ufrag:QHrRjNHLoIKXQtYB
a=ice-pwd:GHbuZhGhaZCfMATczNdHtRlPqbyfrrVB
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:124 H264/90000
a=fmtp:124 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
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=rtpmap:108 H264/90000
a=fmtp:108 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=42e01f
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=extmap:4 <http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01>
a=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
a=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid
a=inactive
.
.
.
a=candidate:4267975093 1 tcp 2124414975 192.168.99.64 7881 typ host tcptype passive
a=candidate:4267975093 2 tcp 2124414975 192.168.99.64 7881 typ host tcptype passive
a=end-of-candidates
--- Error occurred:
Copy code
[<http://sdp_offer_answer.cc:758|sdp_offer_answer.cc:758>]: Failed to set remote answer sdp: A BUNDLE group was added in the answer that did not exist in the offer.
Could anybody give some hints, thanks!
🙏 1
b
What is your RTCConfiguration?
h
thanks for your reply, I only set the
sdp_semantics
to`SdpSemantics::kUnifiedPlan`, other configs are left to default.
I just tried the Android client sdk demo, and I met the same issue
E/RTCEngine$onAnswer: error setting remote description for answer: Failed to set remote answer sdp: A BUNDLE group in answer contains a MID='3' that was not in the offered group.
I only modified this code block to
Copy code
val transceivers = engine.publisher.peerConnection.transceivers
for (t in transceivers) {
    if (t.sender.id() == track.rtcTrack.id()) {
        engine.publisher.peerConnection.removeTrack(t.sender)
        t.stop()
    }
}
After I did publish & unpublish the screen several times, I can see more m-lines generated into the local offer sdp if I did NOT change the code, and the memory usage will keep growing until
pc.close()
got called.
According to this link:
Stopping a transceiver allows freeing its network port, encoder and decoder resources. This also makes its m= section in the SDP reusable by future transceivers, preventing the SDP from growing indefinitely as transceivers are added and removed.
I should call the
transceiver.stop()
if I need to publish/unpublish the same video source repeatedly, could this be a bug related to pion?
d
undoing my previous response because I misunderstood your question. it is possible this is due to a behavior in Pion not correctly removing the m= section. do you mind filing an issue in livekit/livekit? Android does not use Pion. what you are seeing is libwebrtc behavior. FWIW, we recommend using publisher mute instead of fully unpublishing for this reason. it will also be a faster way of republishing since it wouldn't require a renegotiation to start sending bits again (this is automatic if you use the
setCameraEnabled
APIs)
h
Thanks for your reply and sorry for my bad English, I am willing to file an issue (please give me some time to reorganize my words).
Android does not use Pion. what you are seeing is libwebrtc behavior.
You are right, this is what I meant, I have tried use two clients (one for publishing, another for subscribing) without connect to the SFU server, and they did work fine (for the publisher side: add transceiver, stop transceiver again and again..., the m= section was removed but the a=mid was increase).
we recommend using publisher mute instead of fully unpublishing
This is a very good idea, but if I need to publish multi video sources (add multi transceivers to the pc) to the SFU, this could be an issue because the encoders & ports are not released. I did not find a public API to remove the transceiver and I guess its not support by the WebRTC stack.
d
our clients should support
replaceTrack
to switch between different sources.
on mid increasing, I believe that should be fine.
h
Already opened a new issue, https://github.com/livekit/livekit/issues/1850 thank you.
🙏 1