TensorWorks / Buccaneer

A performance metric and semantic event logging solution for the Unreal Engine
MIT License
24 stars 11 forks source link

Desktop browser won't connect to compose example #2

Closed TravisBowers closed 2 years ago

TravisBowers commented 2 years ago

After applying the suggested solution in #1, the example deployment outlined in the docker-compose example appears to run on a GPU container host as expected.

However, several Linux desktop browsers are unable to connect successfully to the compose's demo application.

Firefox 100.0 and Chromium 100.0.4896.127

Fails to connect with: Disconnected: "Failed to set remote offer sdp: Failed to set remote video description send parameters." This is somewhat unsurprising. These browsers typically exhibit this behavior on linux.

Google Chrome (Desktop) 101.0.4951.54

The browser hangs at "Starting connection to server, please wait" indefinitely. The triangular "play" button never appears.

Typically, this browser works well as a pixelstream client. In fact, pixelstreaming works as expected after modifying the docker compose to deploy a different pixelstreaming application. Of course, this breaks the Buccaneer integration because the alternate app does not support Buccaneer yet.

Compose logs when the Chrome browser attempts to connect:

cirrus          | 16:00:24.158 player 109 (::ffff:172.16.0.162) connected
cirrus          | 16:00:24.171 <- player 109: {"type":"offer","sdp":"v=0\r\no=- 4382827223049539121 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1 2\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS\r\nm=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 122 127 121 125 107 108 109 124 120 123 119 35 36 37 38 39 40 41 42 114 115 116 43\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:fg2J\r\na=ice-pwd:mcMTiaD/0/Bsee4rJ9LxgF29\r\na=ice-options:trickle\r\na=fingerprint:sha-256 B6:FA:B2:99:22:37:2D:A1:A2:AB:21:83:1F:35:0D:62:D2:18:A6:49:96:61:3C:67:D4:89:A3:59:32:C9:19:2C\r\na=setup:actpass\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 urn:3gpp:video-orientation\r\na=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\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 VP9/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 profile-id=2\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:102 VP9/90000\r\na=rtcp-fb:102 goog-remb\r\na=rtcp-fb:102 transport-cc\r\na=rtcp-fb:102 ccm fir\r\na=rtcp-fb:102 nack\r\na=rtcp-fb:102 nack pli\r\na=fmtp:102 profile-id=1\r\na=rtpmap:122 rtx/90000\r\na=fmtp:122 apt=102\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=1;profile-level-id=42001f\r\na=rtpmap:121 rtx/90000\r\na=fmtp:121 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=0;profile-level-id=42001f\r\na=rtpmap:107 rtx/90000\r\na=fmtp:107 apt=125\r\na=rtpmap:108 H264/90000\r\na=rtcp-fb:108 goog-remb\r\na=rtcp-fb:108 transport-cc\r\na=rtcp-fb:108 ccm fir\r\na=rtcp-fb:108 nack\r\na=rtcp-fb:108 nack pli\r\na=fmtp:108 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:109 rtx/90000\r\na=fmtp:109 apt=108\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:120 rtx/90000\r\na=fmtp:120 apt=124\r\na=rtpmap:123 H264/90000\r\na=rtcp-fb:123 goog-remb\r\na=rtcp-fb:123 transport-cc\r\na=rtcp-fb:123 ccm fir\r\na=rtcp-fb:123 nack\r\na=rtcp-fb:123 nack pli\r\na=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f\r\na=rtpmap:119 rtx/90000\r\na=fmtp:119 apt=123\r\na=rtpmap:35 H264/90000\r\na=rtcp-fb:35 goog-remb\r\na=rtcp-fb:35 transport-cc\r\na=rtcp-fb:35 ccm fir\r\na=rtcp-fb:35 nack\r\na=rtcp-fb:35 nack pli\r\na=fmtp:35 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=4d001f\r\na=rtpmap:36 rtx/90000\r\na=fmtp:36 apt=35\r\na=rtpmap:37 H264/90000\r\na=rtcp-fb:37 goog-remb\r\na=rtcp-fb:37 transport-cc\r\na=rtcp-fb:37 ccm fir\r\na=rtcp-fb:37 nack\r\na=rtcp-fb:37 nack pli\r\na=fmtp:37 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=f4001f\r\na=rtpmap:38 rtx/90000\r\na=fmtp:38 apt=37\r\na=rtpmap:39 H264/90000\r\na=rtcp-fb:39 goog-remb\r\na=rtcp-fb:39 transport-cc\r\na=rtcp-fb:39 ccm fir\r\na=rtcp-fb:39 nack\r\na=rtcp-fb:39 nack pli\r\na=fmtp:39 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=f4001f\r\na=rtpmap:40 rtx/90000\r\na=fmtp:40 apt=39\r\na=rtpmap:41 AV1/90000\r\na=rtcp-fb:41 goog-remb\r\na=rtcp-fb:41 transport-cc\r\na=rtcp-fb:41 ccm fir\r\na=rtcp-fb:41 nack\r\na=rtcp-fb:41 nack pli\r\na=rtpmap:42 rtx/90000\r\na=fmtp:42 apt=41\r\na=rtpmap:114 red/90000\r\na=rtpmap:115 rtx/90000\r\na=fmtp:115 apt=114\r\na=rtpmap:116 ulpfec/90000\r\na=rtpmap:43 flexfec-03/90000\r\na=rtcp-fb:43 goog-remb\r\na=rtcp-fb:43 transport-cc\r\na=fmtp:43 repair-window=10000000\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 63 103 104 9 0 8 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:fg2J\r\na=ice-pwd:mcMTiaD/0/Bsee4rJ9LxgF29\r\na=ice-options:trickle\r\na=fingerprint:sha-256 B6:FA:B2:99:22:37:2D:A1:A2:AB:21:83:1F:35:0D:62:D2:18:A6:49:96:61:3C:67:D4:89:A3:59:32:C9:19:2C\r\na=setup:actpass\r\na=mid:1\r\na=extmap:14 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid\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;stereo=1;sprop-maxcapturerate=48000\r\na=rtpmap:63 red/48000/2\r\na=fmtp:63 111/111\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/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=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\nc=IN IP4 0.0.0.0\r\na=ice-ufrag:fg2J\r\na=ice-pwd:mcMTiaD/0/Bsee4rJ9LxgF29\r\na=ice-options:trickle\r\na=fingerprint:sha-256 B6:FA:B2:99:22:37:2D:A1:A2:AB:21:83:1F:35:0D:62:D2:18:A6:49:96:61:3C:67:D4:89:A3:59:32:C9:19:2C\r\na=setup:actpass\r\na=mid:2\r\na=sctp-port:5000\r\na=max-message-size:262144\r\n"}
cirrus          | 16:00:24.171 <- player 109: offer
cirrus          | 16:00:24.173 <- player 109: {"type":"iceCandidate","candidate":{"candidate":"candidate:4114987896 1 udp 2113937151 2d73213f-6c90-4fdb-851c-6aec3402ec02.local 34667 typ host generation 0 ufrag fg2J network-cost 999","sdpMid":"0","sdpMLineIndex":0}}
cirrus          | 16:00:24.173 <- player 109: iceCandidate
cirrus          | 16:00:24.173 <- player 109: {"type":"iceCandidate","candidate":{"candidate":"candidate:4114987896 1 udp 2113937151 2d73213f-6c90-4fdb-851c-6aec3402ec02.local 36091 typ host generation 0 ufrag fg2J network-cost 999","sdpMid":"1","sdpMLineIndex":1}}
cirrus          | 16:00:24.173 <- player 109: iceCandidate
cirrus          | 16:00:24.173 <- player 109: {"type":"iceCandidate","candidate":{"candidate":"candidate:4114987896 1 udp 2113937151 2d73213f-6c90-4fdb-851c-6aec3402ec02.local 50942 typ host generation 0 ufrag fg2J network-cost 999","sdpMid":"2","sdpMLineIndex":2}}
cirrus          | 16:00:24.174 <- player 109: iceCandidate
unreal          | [2022.05.10-15.54.15:523][610]PixelStreamer: PixelStreaming video encoder CONFIG INITIALISED - unassociated with player for now.
unreal          | [2022.05.10-15.54.15:523][610]PixelStreamer: PixelStreaming video encoder CALLBACK REGISTERED - unassociated with player for now.
unreal          | [2022.05.10-15.54.15:602][615]PixelStreamer: FPlayerSession::OnIceCandidate : PlayerId=108
unreal          | [2022.05.10-15.54.15:602][615]PixelStreamer: FPlayerSession::OnIceGatheringChange : PlayerId=108, NewState=IceGatheringComplete
unreal          | [2022.05.10-15.54.34:675][759]LogPixelStreamingSS: <- SS: {"type":"pong","time":1652198074}
unreal          | [2022.05.10-15.55.34:649][357]LogPixelStreamingSS: <- SS: {"type":"pong","time":1652198134}
unreal          | [2022.05.10-15.56.34:668][957]LogPixelStreamingSS: <- SS: {"type":"pong","time":1652198194}
unreal          | [2022.05.10-15.57.34:662][556]LogPixelStreamingSS: <- SS: {"type":"pong","time":1652198254}
unreal          | [2022.05.10-15.58.34:663][155]LogPixelStreamingSS: <- SS: {"type":"pong","time":1652198314}
unreal          | [2022.05.10-15.59.34:685][756]LogPixelStreamingSS: <- SS: {"type":"pong","time":1652198374}
unreal          | [2022.05.10-16.00.17:298][312]LogPixelStreamingSS: <- SS: {"type":"playerDisconnected","playerId":"108"}
unreal          | [2022.05.10-16.00.17:298][312]PixelStreamer: player 108 disconnected
unreal          | [2022.05.10-16.00.17:305][312]PixelStreamer: FPlayerSession::~FPlayerSession: PlayerId=108
unreal          | [2022.05.10-16.00.17:305][312]PixelStreamer: FPlayerSession::OnIceConnectionChange : PlayerId=108, NewState=IceConnectionClosed
unreal          | [2022.05.10-16.00.17:305][312]PixelStreamer: FPlayerSession::OnSignalingChange : PlayerId=108, NewState=Closed
unreal          | [2022.05.10-16.00.17:306][312]PixelStreamer: PixelStreaming video encoder RELEASED for PlayerId=Invalid Player Id
unreal          | [2022.05.10-16.00.17:306][312]PixelStreamer: Encoder factory asked to remove encoder for PlayerId=Invalid Player Id
cirrus          | 16:00:24.220 <- Streamer: {"type":"answer","playerId":109,"sdp":"v=0\r\no=- 7162343887995720360 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1 2\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS pixelstreaming_audio_stream_id pixelstreaming_video_stream_id\r\nm=video 9 UDP/TLS/RTP/SAVPF 108 109 114 115 116\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:yG7y\r\na=ice-pwd:VNhWKLJK6oPcvQJCq54lnKNN\r\na=ice-options:trickle\r\na=fingerprint:sha-256 08:58:B8:F9:D6:89:3A:6B:09:70:61:29:87:9B:82:FB:3D:0B:42:61:0A:A1:58:C9:5E:73:B7:95:71:35:DE:0C\r\na=setup:active\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 urn:3gpp:video-orientation\r\na=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=sendonly\r\na=msid:pixelstreaming_video_stream_id pixelstreaming_video_track_label\r\na=rtcp-mux\r\na=rtcp-rsize\r\na=rtpmap:108 H264/90000\r\na=rtcp-fb:108 goog-remb\r\na=rtcp-fb:108 transport-cc\r\na=rtcp-fb:108 ccm fir\r\na=rtcp-fb:108 nack\r\na=rtcp-fb:108 nack pli\r\na=fmtp:108 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:109 rtx/90000\r\na=fmtp:109 apt=108\r\na=rtpmap:114 red/90000\r\na=rtpmap:115 rtx/90000\r\na=fmtp:115 apt=114\r\na=rtpmap:116 ulpfec/90000\r\na=ssrc-group:FID 620292967 4182456535\r\na=ssrc:620292967 cname:s8hNjUegOl6V+sSu\r\na=ssrc:620292967 msid:pixelstreaming_video_stream_id pixelstreaming_video_track_label\r\na=ssrc:620292967 mslabel:pixelstreaming_video_stream_id\r\na=ssrc:620292967 label:pixelstreaming_video_track_label\r\na=ssrc:4182456535 cname:s8hNjUegOl6V+sSu\r\na=ssrc:4182456535 msid:pixelstreaming_video_stream_id pixelstreaming_video_track_label\r\na=ssrc:4182456535 mslabel:pixelstreaming_video_stream_id\r\na=ssrc:4182456535 label:pixelstreaming_video_track_label\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 110\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:yG7y\r\na=ice-pwd:VNhWKLJK6oPcvQJCq54lnKNN\r\na=ice-options:trickle\r\na=fingerprint:sha-256 08:58:B8:F9:D6:89:3A:6B:09:70:61:29:87:9B:82:FB:3D:0B:42:61:0A:A1:58:C9:5E:73:B7:95:71:35:DE:0C\r\na=setup:active\r\na=mid:1\r\na=extmap:14 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=sendonly\r\na=msid:pixelstreaming_audio_stream_id pixelstreaming_audio_track_label\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:110 telephone-event/48000\r\na=ssrc:3315351883 cname:s8hNjUegOl6V+sSu\r\na=ssrc:3315351883 msid:pixelstreaming_audio_stream_id pixelstreaming_audio_track_label\r\na=ssrc:3315351883 mslabel:pixelstreaming_audio_stream_id\r\na=ssrc:3315351883 label:pixelstreaming_audio_track_label\r\nm=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\nc=IN IP4 0.0.0.0\r\nb=AS:30\r\na=ice-ufrag:yG7y\r\na=ice-pwd:VNhWKLJK6oPcvQJCq54lnKNN\r\na=ice-options:trickle\r\na=fingerprint:sha-256 08:58:B8:F9:D6:89:3A:6B:09:70:61:29:87:9B:82:FB:3D:0B:42:61:0A:A1:58:C9:5E:73:B7:95:71:35:DE:0C\r\na=setup:active\r\na=mid:2\r\na=sctp-port:5000\r\na=max-message-size:262144\r\n"}
cirrus          | 16:00:24.253 <- Streamer: {"type":"iceCandidate","playerId":109,"candidate":{"sdpMid":"0","sdpMLineIndex":0,"candidate":"candidate:1136419859 1 udp 2122260223 172.18.0.8 56896 typ host generation 0 ufrag yG7y network-id 1"}}
cirrus          | 16:00:24.320 <- Streamer: {"type":"iceCandidate","playerId":109,"candidate":{"sdpMid":"0","sdpMLineIndex":0,"candidate":"candidate:222271715 1 tcp 1518280447 172.18.0.8 46907 typ host tcptype passive generation 0 ufrag yG7y network-id 1"}}
loki            | level=info ts=2022-05-10T16:00:31.990878532Z caller=table_manager.go:169 msg="uploading tables"
loki            | level=info ts=2022-05-10T16:00:31.991087644Z caller=table.go:358 msg="uploading table index_19116"
loki            | level=info ts=2022-05-10T16:00:31.991116501Z caller=table.go:385 msg="finished uploading table index_19116"
loki            | level=info ts=2022-05-10T16:00:31.991134835Z caller=table.go:443 msg="cleaning up unwanted dbs from table index_19116"
loki            | level=info ts=2022-05-10T16:00:31.991204005Z caller=table.go:358 msg="uploading table index_19122"
loki            | level=info ts=2022-05-10T16:00:31.991236775Z caller=table.go:385 msg="finished uploading table index_19122"
loki            | level=info ts=2022-05-10T16:00:31.991252352Z caller=table.go:443 msg="cleaning up unwanted dbs from table index_19122"
cirrus          | 16:00:34.621 <- Streamer: {"type":"ping","time":1652198434}

Google Chrome (Android) 101.0.4951.61

Surprisingly, Google Chrome on Android is able to connect to the demo application without any issues. This may rule out some network and server-side issues with Docker, Nvidia drivers, etc.

Compose log when Chrome (Android) connects to the pixelstream:

cirrus          | 16:02:22.328 player 110 (::ffff:172.16.0.183) connected
cirrus          | 16:02:22.423 <- player 110: {"type":"offer","sdp":"v=0\r\no=- 4227529563689380984 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1 2\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS\r\nm=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 125 104 124 106 107 108 109 35 36 37 38 127 123 112 122 114 39\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:MTvl\r\na=ice-pwd:JdnrRp8aj4ZNgnzVH9kBXVd9\r\na=ice-options:trickle\r\na=fingerprint:sha-256 63:DF:C1:83:A6:A1:A6:BE:AF:31:34:EE:D1:C1:6E:7F:22:12:AA:1B:F4:4B:70:27:B6:77:31:30:5A:CB:02:BF\r\na=setup:actpass\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 urn:3gpp:video-orientation\r\na=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\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 VP9/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 profile-id=1\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:102 VP9/90000\r\na=rtcp-fb:102 goog-remb\r\na=rtcp-fb:102 transport-cc\r\na=rtcp-fb:102 ccm fir\r\na=rtcp-fb:102 nack\r\na=rtcp-fb:102 nack pli\r\na=fmtp:102 profile-id=2\r\na=rtpmap:125 rtx/90000\r\na=fmtp:125 apt=102\r\na=rtpmap:104 H264/90000\r\na=rtcp-fb:104 goog-remb\r\na=rtcp-fb:104 transport-cc\r\na=rtcp-fb:104 ccm fir\r\na=rtcp-fb:104 nack\r\na=rtcp-fb:104 nack pli\r\na=fmtp:104 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\na=rtpmap:124 rtx/90000\r\na=fmtp:124 apt=104\r\na=rtpmap:106 H264/90000\r\na=rtcp-fb:106 goog-remb\r\na=rtcp-fb:106 transport-cc\r\na=rtcp-fb:106 ccm fir\r\na=rtcp-fb:106 nack\r\na=rtcp-fb:106 nack pli\r\na=fmtp:106 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f\r\na=rtpmap:107 rtx/90000\r\na=fmtp:107 apt=106\r\na=rtpmap:108 H264/90000\r\na=rtcp-fb:108 goog-remb\r\na=rtcp-fb:108 transport-cc\r\na=rtcp-fb:108 ccm fir\r\na=rtcp-fb:108 nack\r\na=rtcp-fb:108 nack pli\r\na=fmtp:108 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=64001f\r\na=rtpmap:109 rtx/90000\r\na=fmtp:109 apt=108\r\na=rtpmap:35 H264/90000\r\na=rtcp-fb:35 goog-remb\r\na=rtcp-fb:35 transport-cc\r\na=rtcp-fb:35 ccm fir\r\na=rtcp-fb:35 nack\r\na=rtcp-fb:35 nack pli\r\na=fmtp:35 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=f4001f\r\na=rtpmap:36 rtx/90000\r\na=fmtp:36 apt=35\r\na=rtpmap:37 AV1/90000\r\na=rtcp-fb:37 goog-remb\r\na=rtcp-fb:37 transport-cc\r\na=rtcp-fb:37 ccm fir\r\na=rtcp-fb:37 nack\r\na=rtcp-fb:37 nack pli\r\na=rtpmap:38 rtx/90000\r\na=fmtp:38 apt=37\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=1;profile-level-id=42e01f\r\na=rtpmap:123 rtx/90000\r\na=fmtp:123 apt=127\r\na=rtpmap:112 red/90000\r\na=rtpmap:122 rtx/90000\r\na=fmtp:122 apt=112\r\na=rtpmap:114 ulpfec/90000\r\na=rtpmap:39 flexfec-03/90000\r\na=rtcp-fb:39 goog-remb\r\na=rtcp-fb:39 transport-cc\r\na=fmtp:39 repair-window=10000000\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 63 103 9 0 8 110 113 126\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:MTvl\r\na=ice-pwd:JdnrRp8aj4ZNgnzVH9kBXVd9\r\na=ice-options:trickle\r\na=fingerprint:sha-256 63:DF:C1:83:A6:A1:A6:BE:AF:31:34:EE:D1:C1:6E:7F:22:12:AA:1B:F4:4B:70:27:B6:77:31:30:5A:CB:02:BF\r\na=setup:actpass\r\na=mid:1\r\na=extmap:14 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid\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;stereo=1;sprop-maxcapturerate=48000\r\na=rtpmap:63 red/48000/2\r\na=fmtp:63 111/111\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/8000\r\na=rtpmap:110 telephone-event/48000\r\na=rtpmap:113 telephone-event/16000\r\na=rtpmap:126 telephone-event/8000\r\nm=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\nc=IN IP4 0.0.0.0\r\na=ice-ufrag:MTvl\r\na=ice-pwd:JdnrRp8aj4ZNgnzVH9kBXVd9\r\na=ice-options:trickle\r\na=fingerprint:sha-256 63:DF:C1:83:A6:A1:A6:BE:AF:31:34:EE:D1:C1:6E:7F:22:12:AA:1B:F4:4B:70:27:B6:77:31:30:5A:CB:02:BF\r\na=setup:actpass\r\na=mid:2\r\na=sctp-port:5000\r\na=max-message-size:262144\r\n"}
cirrus          | 16:02:22.423 <- player 110: offer
cirrus          | 16:02:22.424 <- player 110: {"type":"iceCandidate","candidate":{"candidate":"candidate:4073284220 1 udp 2113937151 172.16.0.183 43167 typ host generation 0 ufrag MTvl network-cost 999","sdpMid":"0","sdpMLineIndex":0}}
cirrus          | 16:02:22.424 <- player 110: iceCandidate
cirrus          | 16:02:22.426 <- player 110: {"type":"iceCandidate","candidate":{"candidate":"candidate:4073284220 1 udp 2113937151 172.16.0.183 52635 typ host generation 0 ufrag MTvl network-cost 999","sdpMid":"1","sdpMLineIndex":1}}
cirrus          | 16:02:22.426 <- player 110: iceCandidate
cirrus          | 16:02:22.426 <- player 110: {"type":"iceCandidate","candidate":{"candidate":"candidate:4073284220 1 udp 2113937151 172.16.0.183 48218 typ host generation 0 ufrag MTvl network-cost 999","sdpMid":"2","sdpMLineIndex":2}}
cirrus          | 16:02:22.427 <- player 110: iceCandidate
unreal          | [2022.05.10-16.00.24:187][725]LogPixelStreamingSS: <- SS: {"type":"offer","sdp":"v=0\r\no=- 4382827223049539121 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1 2\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS\r\nm=video 9 UDP/TLS/RTP/SAVPF 96 97 98 99 100 101 102 122 127 121 125 107 108 109 124 120 123 119 35 36 37 38 39 40 41 42 114 115 116 43\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:fg2J\r\na=ice-pwd:mcMTiaD/0/Bsee4rJ9LxgF29\r\na=ice-options:trickle\r\na=fingerprint:sha-256 B6:FA:B2:99:22:37:2D:A1:A2:AB:21:83:1F:35:0D:62:D2:18:A6:49:96:61:3C:67:D4:89:A3:59:32:C9:19:2C\r\na=setup:actpass\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 urn:3gpp:video-orientation\r\na=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\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 VP9/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 profile-id=2\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:102 VP9/90000\r\na=rtcp-fb:102 goog-remb\r\na=rtcp-fb:102 transport-cc\r\na=rtcp-fb:102 ccm fir\r\na=rtcp-fb:102 nack\r\na=rtcp-fb:102 nack pli\r\na=fmtp:102 profile-id=1\r\na=rtpmap:122 rtx/90000\r\na=fmtp:122 apt=102\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=1;profile-level-id=42001f\r\na=rtpmap:121 rtx/90000\r\na=fmtp:121 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=0;profile-level-id=42001f\r\na=rtpmap:107 rtx/90000\r\na=fmtp:107 apt=125\r\na=rtpmap:108 H264/90000\r\na=rtcp-fb:108 goog-remb\r\na=rtcp-fb:108 transport-cc\r\na=rtcp-fb:108 ccm fir\r\na=rtcp-fb:108 nack\r\na=rtcp-fb:108 nack pli\r\na=fmtp:108 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f\r\na=rtpmap:109 rtx/90000\r\na=fmtp:109 apt=108\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:120 rtx/90000\r\na=fmtp:120 apt=124\r\na=rtpmap:123 H264/90000\r\na=rtcp-fb:123 goog-remb\r\na=rtcp-fb:123 transport-cc\r\na=rtcp-fb:123 ccm fir\r\na=rtcp-fb:123 nack\r\na=rtcp-fb:123 nack pli\r\na=fmtp:123 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=4d001f\r\na=rtpmap:119 rtx/90000\r\na=fmtp:119 apt=123\r\na=rtpmap:35 H264/90000\r\na=rtcp-fb:35 goog-remb\r\na=rtcp-fb:35 transport-cc\r\na=rtcp-fb:35 ccm fir\r\na=rtcp-fb:35 nack\r\na=rtcp-fb:35 nack pli\r\na=fmtp:35 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=4d001f\r\na=rtpmap:36 rtx/90000\r\na=fmtp:36 apt=35\r\na=rtpmap:37 H264/90000\r\na=rtcp-fb:37 goog-remb\r\na=rtcp-fb:37 transport-cc\r\na=rtcp-fb:37 ccm fir\r\na=rtcp-fb:37 nack\r\na=rtcp-fb:37 nack pli\r\na=fmtp:37 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=f4001f\r\na=rtpmap:38 rtx/90000\r\na=fmtp:38 apt=37\r\na=rtpmap:39 H264/90000\r\na=rtcp-fb:39 goog-remb\r\na=rtcp-fb:39 transport-cc\r\na=rtcp-fb:39 ccm fir\r\na=rtcp-fb:39 nack\r\na=rtcp-fb:39 nack pli\r\na=fmtp:39 level-asymmetry-allowed=1;packetization-mode=0;profile-level-id=f4001f\r\na=rtpmap:40 rtx/90000\r\na=fmtp:40 apt=39\r\na=rtpmap:41 AV1/90000\r\na=rtcp-fb:41 goog-remb\r\na=rtcp-fb:41 transport-cc\r\na=rtcp-fb:41 ccm fir\r\na=rtcp-fb:41 nack\r\na=rtcp-fb:41 nack pli\r\na=rtpmap:42 rtx/90000\r\na=fmtp:42 apt=41\r\na=rtpmap:114 red/90000\r\na=rtpmap:115 rtx/90000\r\na=fmtp:115 apt=114\r\na=rtpmap:116 ulpfec/90000\r\na=rtpmap:43 flexfec-03/90000\r\na=rtcp-fb:43 goog-remb\r\na=rtcp-fb:43 transport-cc\r\na=fmtp:43 repair-window=10000000\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 63 103 104 9 0 8 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:fg2J\r\na=ice-pwd:mcMTiaD/0/Bsee4rJ9LxgF29\r\na=ice-options:trickle\r\na=fingerprint:sha-256 B6:FA:B2:99:22:37:2D:A1:A2:AB:21:83:1F:35:0D:62:D2:18:A6:49:96:61:3C:67:D4:89:A3:59:32:C9:19:2C\r\na=setup:actpass\r\na=mid:1\r\na=extmap:14 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid\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;stereo=1;sprop-maxcapturerate=48000\r\na=rtpmap:63 red/48000/2\r\na=fmtp:63 111/111\r\na=rtpmap:103 ISAC/16000\r\na=rtpmap:104 ISAC/32000\r\na=rtpmap:9 G722/8000\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 PCMA/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=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\nc=IN IP4 0.0.0.0\r\na=ice-ufrag:fg2J\r\na=ice-pwd:mcMTiaD/0/Bsee4rJ9LxgF29\r\na=ice-options:trickle\r\na=fingerprint:sha-256 B6:FA:B2:99:22:37:2D:A1:A2:AB:21:83:1F:35:0D:62:D2:18:A6:49:96:61:3C:67:D4:89:A3:59:32:C9:19:2C\r\na=setup:actpass\r\na=mid:2\r\na=sctp-port:5000\r\na=max-message-size:262144\r\n","playerId":"109"}
unreal          | [2022.05.10-16.00.24:202][725]PixelStreamer: Creating player session for PlayerId=109
unreal          | [2022.05.10-16.00.24:202][725]PixelStreamer: Created FPlayerSession::FPlayerSession: PlayerId=109
unreal          | [2022.05.10-16.00.24:202][725]PixelStreamer: Quality controller is now PlayerId=109.
unreal          | [2022.05.10-16.00.24:202][725]PixelStreamer: FPlayerSession::OnRenegotiationNeeded : PlayerId=109
unreal          | [2022.05.10-16.00.24:202][725]PixelStreamer: FPlayerSession::OnSignalingChange : PlayerId=109, NewState=HaveRemoteOffer
unreal          | [2022.05.10-16.00.24:202][725]LogPixelStreamingSS: <- SS: {"type":"iceCandidate","candidate":{"candidate":"candidate:4114987896 1 udp 2113937151 2d73213f-6c90-4fdb-851c-6aec3402ec02.local 34667 typ host generation 0 ufrag fg2J network-cost 999","sdpMid":"0","sdpMLineIndex":0},"playerId":"109"}
unreal          | [2022.05.10-16.00.24:202][725]LogPixelStreamingSS: <- SS: {"type":"iceCandidate","candidate":{"candidate":"candidate:4114987896 1 udp 2113937151 2d73213f-6c90-4fdb-851c-6aec3402ec02.local 36091 typ host generation 0 ufrag fg2J network-cost 999","sdpMid":"1","sdpMLineIndex":1},"playerId":"109"}
unreal          | [2022.05.10-16.00.24:203][725]LogPixelStreamingSS: <- SS: {"type":"iceCandidate","candidate":{"candidate":"candidate:4114987896 1 udp 2113937151 2d73213f-6c90-4fdb-851c-6aec3402ec02.local 50942 typ host generation 0 ufrag fg2J network-cost 999","sdpMid":"2","sdpMLineIndex":2},"playerId":"109"}
unreal          | [2022.05.10-16.00.24:218][726]PixelStreamer: FPlayerSession::OnSignalingChange : PlayerId=109, NewState=Stable
unreal          | [2022.05.10-16.00.24:218][726]PixelStreamer: FPlayerSession::OnIceConnectionChange : PlayerId=109, NewState=IceConnectionChecking
unreal          | [2022.05.10-16.00.24:218][726]PixelStreamer: FPlayerSession::OnIceGatheringChange : PlayerId=109, NewState=IceGatheringGathering
unreal          | [2022.05.10-16.00.24:218][726]PixelStreamer: FPlayerSession::OnIceCandidate : PlayerId=109
unreal          | [2022.05.10-16.00.24:235][727]PixelStreamer: Encoder factory addded new encoder - soon to be associated with a player.
unreal          | [2022.05.10-16.00.24:235][727]PixelStreamer: PixelStreaming video encoder CONFIG INITIALISED - unassociated with player for now.
unreal          | [2022.05.10-16.00.24:235][727]PixelStreamer: PixelStreaming video encoder CALLBACK REGISTERED - unassociated with player for now.
unreal          | [2022.05.10-16.00.24:318][732]PixelStreamer: FPlayerSession::OnIceCandidate : PlayerId=109
unreal          | [2022.05.10-16.00.24:318][732]PixelStreamer: FPlayerSession::OnIceGatheringChange : PlayerId=109, NewState=IceGatheringComplete
unreal          | [2022.05.10-16.00.34:669][353]LogPixelStreamingSS: <- SS: {"type":"pong","time":1652198434}
unreal          | [2022.05.10-16.01.34:666][952]LogPixelStreamingSS: <- SS: {"type":"pong","time":1652198494}
unreal          | [2022.05.10-16.02.09:770][ 58]LogPixelStreamingSS: <- SS: {"type":"playerDisconnected","playerId":"109"}
unreal          | [2022.05.10-16.02.09:770][ 58]PixelStreamer: player 109 disconnected
unreal          | [2022.05.10-16.02.09:778][ 58]PixelStreamer: FPlayerSession::~FPlayerSession: PlayerId=109
unreal          | [2022.05.10-16.02.09:778][ 58]PixelStreamer: FPlayerSession::OnIceConnectionChange : PlayerId=109, NewState=IceConnectionClosed
unreal          | [2022.05.10-16.02.09:778][ 58]PixelStreamer: FPlayerSession::OnSignalingChange : PlayerId=109, NewState=Closed
unreal          | [2022.05.10-16.02.09:778][ 58]PixelStreamer: PixelStreaming video encoder RELEASED for PlayerId=Invalid Player Id
unreal          | [2022.05.10-16.02.09:778][ 58]PixelStreamer: Encoder factory asked to remove encoder for PlayerId=Invalid Player Id
cirrus          | 16:02:22.477 <- Streamer: {"type":"answer","playerId":110,"sdp":"v=0\r\no=- 7576848834513002917 2 IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\na=group:BUNDLE 0 1 2\r\na=extmap-allow-mixed\r\na=msid-semantic: WMS pixelstreaming_audio_stream_id pixelstreaming_video_stream_id\r\nm=video 9 UDP/TLS/RTP/SAVPF 127 123 112 122 114\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:yS8A\r\na=ice-pwd:5NhEaCGAhwAk4zfAxNcwycTL\r\na=ice-options:trickle\r\na=fingerprint:sha-256 FA:BE:52:E5:81:EC:85:3B:38:91:4F:6E:CF:2B:9C:D4:14:2C:31:C5:1A:4E:CD:71:C0:D7:92:F1:E7:19:98:F3\r\na=setup:active\r\na=mid:0\r\na=extmap:1 urn:ietf:params:rtp-hdrext:toffset\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:3 urn:3gpp:video-orientation\r\na=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:5 http://www.webrtc.org/experiments/rtp-hdrext/playout-delay\r\na=extmap:6 http://www.webrtc.org/experiments/rtp-hdrext/video-content-type\r\na=extmap:7 http://www.webrtc.org/experiments/rtp-hdrext/video-timing\r\na=extmap:8 http://www.webrtc.org/experiments/rtp-hdrext/color-space\r\na=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=extmap:10 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id\r\na=extmap:11 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id\r\na=sendonly\r\na=msid:pixelstreaming_video_stream_id pixelstreaming_video_track_label\r\na=rtcp-mux\r\na=rtcp-rsize\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=1;profile-level-id=42e01f\r\na=rtpmap:123 rtx/90000\r\na=fmtp:123 apt=127\r\na=rtpmap:112 red/90000\r\na=rtpmap:122 rtx/90000\r\na=fmtp:122 apt=112\r\na=rtpmap:114 ulpfec/90000\r\na=ssrc-group:FID 1681795214 3398554076\r\na=ssrc:1681795214 cname:G/+Ftn7euJauDJA1\r\na=ssrc:1681795214 msid:pixelstreaming_video_stream_id pixelstreaming_video_track_label\r\na=ssrc:1681795214 mslabel:pixelstreaming_video_stream_id\r\na=ssrc:1681795214 label:pixelstreaming_video_track_label\r\na=ssrc:3398554076 cname:G/+Ftn7euJauDJA1\r\na=ssrc:3398554076 msid:pixelstreaming_video_stream_id pixelstreaming_video_track_label\r\na=ssrc:3398554076 mslabel:pixelstreaming_video_stream_id\r\na=ssrc:3398554076 label:pixelstreaming_video_track_label\r\nm=audio 9 UDP/TLS/RTP/SAVPF 111 110\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:yS8A\r\na=ice-pwd:5NhEaCGAhwAk4zfAxNcwycTL\r\na=ice-options:trickle\r\na=fingerprint:sha-256 FA:BE:52:E5:81:EC:85:3B:38:91:4F:6E:CF:2B:9C:D4:14:2C:31:C5:1A:4E:CD:71:C0:D7:92:F1:E7:19:98:F3\r\na=setup:active\r\na=mid:1\r\na=extmap:14 urn:ietf:params:rtp-hdrext:ssrc-audio-level\r\na=extmap:2 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time\r\na=extmap:4 http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01\r\na=extmap:9 urn:ietf:params:rtp-hdrext:sdes:mid\r\na=sendonly\r\na=msid:pixelstreaming_audio_stream_id pixelstreaming_audio_track_label\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:110 telephone-event/48000\r\na=ssrc:627685371 cname:G/+Ftn7euJauDJA1\r\na=ssrc:627685371 msid:pixelstreaming_audio_stream_id pixelstreaming_audio_track_label\r\na=ssrc:627685371 mslabel:pixelstreaming_audio_stream_id\r\na=ssrc:627685371 label:pixelstreaming_audio_track_label\r\nm=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\nc=IN IP4 0.0.0.0\r\nb=AS:30\r\na=ice-ufrag:yS8A\r\na=ice-pwd:5NhEaCGAhwAk4zfAxNcwycTL\r\na=ice-options:trickle\r\na=fingerprint:sha-256 FA:BE:52:E5:81:EC:85:3B:38:91:4F:6E:CF:2B:9C:D4:14:2C:31:C5:1A:4E:CD:71:C0:D7:92:F1:E7:19:98:F3\r\na=setup:active\r\na=mid:2\r\na=sctp-port:5000\r\na=max-message-size:262144\r\n"}
cirrus          | 16:02:22.510 <- Streamer: {"type":"iceCandidate","playerId":110,"candidate":{"sdpMid":"0","sdpMLineIndex":0,"candidate":"candidate:1136419859 1 udp 2122260223 172.18.0.8 58608 typ host generation 0 ufrag yS8A network-id 1"}}
loki            | level=info ts=2022-05-10T16:02:31.991170401Z caller=table_manager.go:169 msg="uploading tables"
loki            | level=info ts=2022-05-10T16:02:31.99141458Z caller=table.go:358 msg="uploading table index_19116"
loki            | level=info ts=2022-05-10T16:02:31.991459106Z caller=table.go:385 msg="finished uploading table index_19116"
loki            | level=info ts=2022-05-10T16:02:31.991488771Z caller=table.go:443 msg="cleaning up unwanted dbs from table index_19116"
loki            | level=info ts=2022-05-10T16:02:31.991556842Z caller=table.go:358 msg="uploading table index_19122"
loki            | level=info ts=2022-05-10T16:02:31.991587906Z caller=table.go:385 msg="finished uploading table index_19122"
loki            | level=info ts=2022-05-10T16:02:31.991603614Z caller=table.go:443 msg="cleaning up unwanted dbs from table index_19122"
cirrus          | 16:02:34.616 <- Streamer: {"type":"ping","time":1652198554}

Other details

Docker version: 20.10.14, build a224086 Docker Compose Version: 1.25.0 Nvidia Driver version: 510.60.02 CUDA Version: 11.6 OS Version: Ubuntu 20.04.4 LTS

It's entirely possible that is issue isn't a Buccaneer issue at all. After all, Unreal Engine Metrics dashboard provided by the grafana container is plotting realtime data. The pixelstreaming session for the demo app could be breaking down at a different layer, but it's unclear why this is happening.

Belchy06 commented 2 years ago

Hmm, this issue is really confusing.

Are the web browsers you're using to connect to the demo running on the same machine as the instance?

If not, what's the network layout like? I may need to add a CoTurn container to the demo to allow for it to work in more complex network topologies.

Also, what command are you using to launch the demo? I've tested both with docker-compose up as well as docker compose up. Both worked fine, but I did notice that they return different version numbers.

The versions of the dependencies are below: Docker version: 20.10.14, build a224086 docker-compose version: 1.27.4 docker compose version: 2.3.3 Nvidia Driver Version: 510.60.02 CUDA Version: 11.6 OS: Ubuntu 21.10

TravisBowers commented 2 years ago

As another data point, I can report that a clients running google chrome version (Fedora) 91.0.4472 and 101.0.4951.54 (Windows) are also getting stuck on "Starting connection to server, please wait"

I've had identical results with docker-compose up and docker compose up.

The demo is running on a headless system on the same subnet and vlan as the web browser clients that I have tested with. Among the client systems that I've tested with, the android browser has been the only one to succesffully connect to the pixelstreaming application.

TravisBowers commented 2 years ago

buccaneer_demo_chrome_console.log This is the chrome console log from a failed connection attempt. These lines seem strange to me. 172.19.0.5 is not a local IP that exists anywhere on my test network.

webRtcPlayer.js:459 ICE candidate:  {sdpMid: '0', sdpMLineIndex: 0, candidate: 'candidate:2105326672 1 udp 2122260223 172.19.0.5 39834 typ host generation 0 ufrag 23vP network-id 1'}
webRtcPlayer.js:462 ICE candidate successfully added
webRtcPlayer.js:172 ice connection state change: Event {isTrusted: true, type: 'iceconnectionstatechange', target: RTCPeerConnection, currentTarget: RTCPeerConnection, eventPhase: 2, …}
app.js:1856 <- SS: {"type":"iceCandidate","candidate":{"sdpMid":"0","sdpMLineIndex":0,"candidate":"candidate:872366240 1 tcp 1518280447 172.19.0.5 50605 typ host tcptype passive generation 0 ufrag 23vP network-id 1"}}
webRtcPlayer.js:459 ICE candidate:  {sdpMid: '0', sdpMLineIndex: 0, candidate: 'candidate:872366240 1 tcp 1518280447 172.19.0.5 50…type passive generation 0 ufrag 23vP network-id 1'}
webRtcPlayer.js:462 ICE candidate successfully added
TravisBowers commented 2 years ago

I think I can confirm that there isn't anything wrong with the containers themselves. I'm able to start them manually with host networking and connect to the pixelstream with:

docker run --rm --name cirrus -d --network=host tensorworks/buccaneerdemo-cirrus
docker run --rm --name unreal -d --gpus all --network=host --entrypoint "sleep" tensorworks/buccaneerdemo-application infinity
docker exec -it unreal /home/ue4/project/TP4.sh -StatsEmitterURL=http://stats:8000 -EventEmitterURL=http://events:8080 -RenderOffScreen -Unattended -PixelStreamingURL=ws://127.0.0.1:8888

The problem most likely has something to do with the way the compose is setting up networking. When running the compose, this is the network configuration on my container host. docker network ls

NETWORK ID     NAME                DRIVER    SCOPE
328d0567595c   bridge              bridge    local
20f9efb166fc   compose_buccaneer   bridge    local
c6ada529bd84   host                host      local
e690d0c4cd4f   none                null      local

ip -br a

lo               UNKNOWN        127.0.0.1/8 ::1/128 
enp1s0           UP             172.16.0.114/24 fe80::5054:ff:fe5d:b471/64 
docker0          DOWN           172.17.0.1/16 
br-20f9efb166fc  UP             172.18.0.1/16 fe80::42:fdff:fef8:1c23/64 
vethe45cdfb@if86 UP             fe80::a85b:12ff:fe69:f7be/64 
veth85c4f05@if88 UP             fe80::7cd0:1aff:fe55:a8ce/64 
vethd6dafac@if90 UP             fe80::483f:feff:febf:eb7a/64 
vethcea33a6@if92 UP             fe80::888b:b0ff:fee4:decf/64 
veth3c9ce83@if94 UP             fe80::682e:d4ff:fe36:e075/64 
veth3fa47f0@if96 UP             fe80::c8d2:5bff:feb6:7ecf/64 
veth7bbc544@if98 UP             fe80::6c71:ecff:fe1a:d44e/64 
vethf3d6cdb@if100 UP             fe80::50e1:dcff:fe23:3ee6/64 

ip route

default via 172.16.0.1 dev enp1s0 proto dhcp src 172.16.0.114 metric 100 
172.16.0.0/24 dev enp1s0 proto kernel scope link src 172.16.0.114 
172.16.0.1 dev enp1s0 proto dhcp scope link src 172.16.0.114 metric 100 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
172.18.0.0/16 dev br-20f9efb166fc proto kernel scope link src 172.18.0.1 

My pixelstream desktop client ip is 172.16.0.162/24

adamrehn commented 2 years ago

@TravisBowers I've updated the Docker Compose demo to use host networking mode in commit a8df164, since it sounds like the issues you're encountering may be related to the networking setup. Could you please give the new demo a try and see if that resolves the problems?

TravisBowers commented 2 years ago

Thanks @adamrehn, the change to host networking seems to have broken the connection between the unreal container and the cirrus server.

unreal      | [2022.06.02-14.05.41:443][580]LogPixelStreamingSS: Error: Failed to connect to SS: Could not initialize connection
unreal      | [2022.06.02-14.05.41:444][580]LogPixelStreamingSS: Connecting to SS ws://cirrus:8888

Perhaps the docker bridge network was providing dns resolution for container services?

adamrehn commented 2 years ago

@TravisBowers ah okay, that looks like Docker Compose is still using the old version of the container image for the demo application. Could you please pull the updated version of the image and try it again:

docker pull tensorworks/buccaneerdemo-application:latest
TravisBowers commented 2 years ago

Thank you, I am able to connect to the demo application now. I think we can consider this issue resolved; however, I am still curious about why a mobile browser was able to connect to the bridge network configuration, but a desktop browser wasn't.