-
Notifications
You must be signed in to change notification settings - Fork 364
Description
Describe the bug
I am attempting to add two different video tracks to the same streaming session, which I assume would be a valid use case, i.e. for sharing both a user's camera and screen share. When doing so, the browser fails to connect on the client because of an invalid SDP answer. Inspecting the generated SDP answer, I notice that when using a single video track or a single video and audio track, the SDP is valid, but when attempting to use two video tracks the SDP contains an invalid line which is blank.
Here is the SDP answer generated for a single video stream, no audio:
"v=0
o=- 1090333328 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0
a=msid-semantic: WMS myKvsVideoStream
m=video 9 UDP/TLS/RTP/SAVPF 125
c=IN IP4 127.0.0.1
a=candidate:1 1 udp 1694498815 192.168.1.29 55309 typ srflx raddr 0.0.0.0 rport 0 generation 0 network-cost 999
a=candidate:0 1 udp 2130706431 192.168.1.29 55370 typ host raddr 0.0.0.0 rport 0 generation 0 network-cost 999
a=msid:myKvsVideoStream /vehicle/sensors/camera/flir/front_cam/encoded
a=ssrc:2102704195 cname:qOWoEx7L1mTgS1zS
a=ssrc:2102704195 msid:myKvsVideoStream /vehicle/sensors/camera/flir/front_cam/encoded
a=ssrc:2102704195 mslabel:myKvsVideoStream
a=ssrc:2102704195 label:/vehicle/sensors/camera/flir/front_cam/encoded
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:+sRL
a=ice-pwd:76e7fiaJ0x5a7kQaW/k3I/j5
a=ice-options:trickle
a=fingerprint:sha-256 5E:53:77:77:C8:C1:59:4A:2D:B1:75:07:A2:16:E3:51:DC:A5:A2:E8:62:81:24:13:AE:BF:36:F6:4E:03:9F:B9
a=setup:active
a=mid:0
a=sendonly
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:125 H264/90000
a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=rtcp-fb:125 nack
a=rtcp-fb:125 transport-cc
"
Here is the answer generated for two video streams:
"v=0
o=- 1578931153 2 IN IP4 127.0.0.1
s=-
t=0 0
a=group:BUNDLE 0 1
a=msid-semantic: WMS myKvsVideoStream
m=video 9 UDP/TLS/RTP/SAVPF 125
c=IN IP4 127.0.0.1
a=candidate:1 1 udp 1694498815 192.168.1.29 46641 typ srflx raddr 0.0.0.0 rport 0 generation 0 network-cost 999
a=candidate:0 1 udp 2130706431 192.168.1.29 51889 typ host raddr 0.0.0.0 rport 0 generation 0 network-cost 999
a=msid:myKvsVideoStream /vehicle/sensors/camera/flir/front_cam/encoded
a=ssrc:1393935670 cname:NrITmrKOkoBmqqgu
a=ssrc:1393935670 msid:myKvsVideoStream /vehicle/sensors/camera/flir/front_cam/encoded
a=ssrc:1393935670 mslabel:myKvsVideoStream
a=ssrc:1393935670 label:/vehicle/sensors/camera/flir/front_cam/encoded
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:6wZt
a=ice-pwd:evUp22ew3I+p03sugvEpGW4l
a=ice-options:trickle
a=fingerprint:sha-256 54:89:77:FC:8E:8E:00:98:1D:B3:B2:42:89:76:91:18:06:CF:BE:E9:1B:47:6F:31:F1:B0:70:ED:5B:7F:BB:9C
a=setup:active
a=mid:0
a=sendonly
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:125 H264/90000
a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=rtcp-fb:125 nack
a=rtcp-fb:125 transport-cc
m=video 9 UDP/TLS/RTP/SAVPF 125
c=IN IP4 127.0.0.1
a=candidate:1 1 udp 1694498815 192.168.1.29 46641 typ srflx raddr 0.0.0.0 rport 0 generation 0 network-cost 999
a=candidate:0 1 udp 2130706431 192.168.1.29 51889 typ host raddr 0.0.0.0 rport 0 generation 0 network-cost 999
a=msid:myKvsVideoStream /vehicle/sensors/camera/flir/right_cam/encoded
a=ssrc:16767695 cname:NrITmrKOkoBmqqgu
a=ssrc:16767695 msid:myKvsVideoStream /vehicle/sensors/camera/flir/right_cam/encoded
a=ssrc:16767695 mslabel:myKvsVideoStream
a=ssrc:16767695 label:/vehicle/sensors/camera/flir/right_cam/encoded
a=rtcp:9 IN IP4 0.0.0.0
a=ice-ufrag:6wZt
a=ice-pwd:evUp22ew3I+p03sugvEpGW4l
a=ice-options:trickle
a=fingerprint:sha-256 54:89:77:FC:8E:8E:00:98:1D:B3:B2:42:89:76:91:18:06:CF:BE:E9:1B:47:6F:31:F1:B0:70:ED:5B:7F:BB:9C
a=setup:active
a=mid:1
a=
a=rtcp-mux
a=rtcp-rsize
a=rtpmap:125 H264/90000
a=fmtp:125 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f
a=rtcp-fb:125 nack
a=rtcp-fb:125 transport-cc
"
Notice the error on line 46, after a=mid1, there is a blank a=, which the browser cannot parse. I am not sure what this is supposed to be, possibly a=sendonly?
SDK version number
commit b472c1a
To Reproduce
Steps to reproduce the behavior:
- Start with kvs master example
- Change audio track to be a second video track
- Remove code for sending audio frames
- Call sendFrame twice for each track when sending an h264 frame
Expected behavior
Valid SDP answer sent
Desktop (please complete the following information):
- OS: Linux
- Browser Chrome
- Version 88