PixelStreaming2 crashing in SetRemoteSdp

Hi Guys,

I am trying to broadcast a pixel stream using 5.6 and PixelStreaming2.

I can use a 5.4 PixelStreamingPlayer on Windows to connect to the stream and display it , but when I try to use any other webrtc client at all, the broadcast stream crashes in EpicRtc::ConnectionInternal::SetRemoteSDP(struct EpicRtc::Sdp const &)

From the crash it appears the Sdp is null

I have compared answers from the 5.4 player and my other apps and the Sdp in both looks fine.

However it crashes 100% of the time.

I can see the answer in the signalling web server , it is complete and fine, but the very next time the TickableThread calls Tick, everything crashes

Since we don’t have access to the source code of EpicRTC we are pretty much in the brown and smelly.

Has anyone come across this and found a solution?

Cheers guys.

Unhandled Exception: SIGSEGV: invalid attempt to read memory at address 0x0000000000000000

[2025.07.21-11.22.26:149][911]LogCore: Fatal error!

0x00000000127ce8bc Broadcaster_5_4!EpicRtc::ConnectionInternal::SetRemoteSDP(EpicRtc::Sdp const&) [/opt/shared/broadcaster56_latest_all/Linux/Broadcaster_5_4/Binaries/Linux/Broadcaster_5_4:-1]
0x0000000012801a5b Broadcaster_5_4!EpicRtc::RoomSignallingContextObserver::OnSetRemoteSDP(std::__1::basic_string_view<char, std::__1::char_traits<char> > const&, EpicRtc::Sdp const&) [/opt/shared/broadcaster56_latest_all/Linux/Broadcaster_5_4/Binaries/Linux/Broadcaster_5_4:-1]
0x0000000012303861 Broadcaster_5_4!EpicRtc::PS::RoomSignallingContext::OnMessage(nlohmann::json_abi_v3_11_2::basic_json<std::__1::map, std::__1::vector, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, bool, long, unsigned long, double, std::__1::allocator, nlohmann::json_abi_v3_11_2::adl_serializer, std::__1::vector<unsigned char, std::__1::allocator<unsigned char> > > const&) [/opt/shared/broadcaster56_latest_all/Linux/Broadcaster_5_4/Binaries/Linux/Broadcaster_5_4:-1]
0x00000000122d7748 Broadcaster_5_4!EpicRtc::PS::SignallingSession::OnMessage(EpicRtcStringView) [/opt/shared/broadcaster56_latest_all/Linux/Broadcaster_5_4/Binaries/Linux/Broadcaster_5_4:-1]
0x0000000012301845 Broadcaster_5_4!EpicRtc::WebsocketObserverWrapper::OnMessage(EpicRtcStringView) [/opt/shared/broadcaster56_latest_all/Linux/Broadcaster_5_4/Binaries/Linux/Broadcaster_5_4:-1]
0x0000000012861414 Broadcaster_5_4!EpicRtc::TickableWebsocketWrapper::OnMessage(EpicRtcStringView)::$_0::operator()() const [/opt/shared/broadcaster56_latest_all/Linux/Broadcaster_5_4/Binaries/Linux/Broadcaster_5_4:-1]
0x00000000128613c5 Broadcaster_5_4!decltype(std::declval<EpicRtc::TickableWebsocketWrapper::OnMessage(EpicRtcStringView)::$_0&>()()) std::__1::__invoke[abi:v15001]

Oh and this happens when the streamer is running on Windows as well as Linux

Hi Paul. I am trying to reproduce the crash you are having but have been unable to reproduce it so far. I am hoping to get the full steps to reproduce and see what is different.

  • Does the crash happen with a fresh UE5 project?
  • Is this a packaged build, or are you attempting to stream from the editor?
  • Are any pixel streaming parameters being set (such as -PixelStreamingEncoderCodec=VP9) or left as default?
  • Are you connecting the streamer to an external signaling server such as the PixelStreamingInfrastructure (and if so, what version) or the internal signaling server?
  • Are the Streamer and the player on separate machines or the same machine?
  • For the PS player, when using UE 5.6.0, is that running PixelStreaming 2 or 1? Does the crash happen when connecting with the browser?

The UE logs could also be helpful. It may be worth setting the logging of LogPixelStreaming2EpicRtc and LogPixelStreaming2 up to VeryVerbose to get more detailed logs.

Regards
Eden

Hi Eden,

The crash happens 100% of the time.

The broadcaster is using PixelStreaming2 on UE5.6

It doesn’t matter if the broadcaster is running locally or on our server.

We are using the signalling server we get by running the batch file from within the resources folder inside the PixelStreaming2 plugin

Pointing the browser at the broadcaster works, and running a PIxelStreamingPlayer on UE5.4 and pointing that at the broadcaster works.

My problem is that UE does not support pixel streaming on Android , so I have a separate webrtc library for Android which works fine with other streaming sources , but crashes the broadcaster on UE5.6

I also have to support Unity (I know, it hurts, but I have to do it), and webrtc clients on Unity crash the broadcaster as well.

I am pretty sure that the problem is caused by the JSON parser. I have found a case in PixelStreaming1 where the incoming iceCandidate JSON does not get handled correctly by TryGetObjectField

I am guessing but I believe it only handles the top layer of JSON objects. So fails to find the sub-object “candidate”

I have a fix for that locally , but it doesn’t help with this case.

Cheers
Paul

Hi Paul.

A Json parsing issue matches my hypothesis. My hypothesis is that there is an error parsing the SDP and that is not being caught which is then causing the crash. I suspect if WebRTC logging is enabled then WebRTC will print out an error before crashing.

If you enable WebRTC logging with "-LogCmds=LogPixelStreaming2WebRtc Log" command line argument, then it should print something like LogPixelStreaming2EpicRtc: Error: Failed to parse: "a=max-m". Reason: Invalid SDP line. The actual reason in the message will probably be different.

If you could confirm or refute that then we can see if my hypothesis fits. Any logs, such as the SDP would also be helpful.

Regards
Eden

Hi Eden,

Yep looks like it is all JSON parsing related

The clients are using a templated class , so at the top level you have four JSON objects.

From, To, Type, Data

The Data field includes a JSON object that is the actual payload.

When the code tries to get the JSON object from this top level it cannot find what it is looking for, so fails to handle the message and dies.

The message flow I currently have (with errors on the client end , it cannot handle the JSON sent by PixelStreaming2) is…

[09:58:14.772] info: New player connection: ::ffff:127.0.0.1 (/)
[09:58:14.773] info: Registered new player: Player1
[09:58:14.774] info: < Player1 :: {"type":"config","peerConnectionOptions":{"iceServers":[{"urls":["stun:stun.l.google.com:19302","turn:86.10.51.141:19303"],"username":"PixelStreamingUser","credential":"AnotherTURNintheroad"}]},"protocolVersion":"1.3.0"}
[09:58:18.539] info: > DefaultStreamer :: {"type":"ping","time":1753693098}
[09:58:18.539] info: < DefaultStreamer :: {"type":"pong","time":1753693098}
[09:58:19.994] info: > Player1 :: {"type":"listStreamers"}
[09:58:19.995] info: < Player1 :: {"type":"streamerList","ids":["DefaultStreamer"]}
[09:58:19.997] info: > Player1 :: {"type":"subscribe","streamerId":"DefaultStreamer"}
[09:58:19.998] info: Player1 > DefaultStreamer :: {"type":"playerConnected","dataChannel":true,"sfu":false,"playerId":"Player1"}
[09:58:20.389] info: DefaultStreamer > Player1 :: {"multiplex":true,"sdp":"v=0\r\no=- 1279226659486654264 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 97 98 99 100 101 102\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:MjxY\r\na=ice-pwd:GOIdIQPRZWGg/QhQ1PQtYCfh\r\na=ice-options:trickle\r\na=fingerprint:sha-256 42:58:1A:9D:51:7C:1E:E1:01:3E:65:5D:1D:EF:CB:13:FD:76:9B:82:6F:87:27:62:F9:46:CB:BC:EC:14:BF:58\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=sendrecv\r\na=msid:pixelstreaming_video_stream_id video\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:97 rtx/90000\r\na=fmtp:97 apt=127\r\na=rtpmap:98 H264/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 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:100 red/90000\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:102 ulpfec/90000\r\na=ssrc-group:FID 988027076 2161586132\r\na=ssrc:988027076 cname:dcaNGjBImXnzUD94\r\na=ssrc:988027076 msid:pixelstreaming_video_stream_id video\r\na=ssrc:2161586132 cname:dcaNGjBImXnzUD94\r\na=ssrc:2161586132 msid:pixelstreaming_video_stream_id video\r\nm=audio 9 UDP/TLS/RTP/SAVPF 96 110\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:MjxY\r\na=ice-pwd:GOIdIQPRZWGg/QhQ1PQtYCfh\r\na=ice-options:trickle\r\na=fingerprint:sha-256 42:58:1A:9D:51:7C:1E:E1:01:3E:65:5D:1D:EF:CB:13:FD:76:9B:82:6F:87:27:62:F9:46:CB:BC:EC:14:BF:58\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=sendrecv\r\na=msid:pixelstreaming_audio_stream_id audio\r\na=rtcp-mux\r\na=rtpmap:96 OPUS/48000/2\r\na=rtcp-fb:96 transport-cc\r\na=rtpmap:110 telephone-event/48000\r\na=ssrc:3111218414 cname:dcaNGjBImXnzUD94\r\na=ssrc:3111218414 msid:pixelstreaming_audio_stream_id audio\r\nm=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\nc=IN IP4 0.0.0.0\r\na=ice-ufrag:MjxY\r\na=ice-pwd:GOIdIQPRZWGg/QhQ1PQtYCfh\r\na=ice-options:trickle\r\na=fingerprint:sha-256 42:58:1A:9D:51:7C:1E:E1:01:3E:65:5D:1D:EF:CB:13:FD:76:9B:82:6F:87:27:62:F9:46:CB:BC:EC:14:BF:58\r\na=setup:actpass\r\na=mid:2\r\na=sctp-port:5000\r\na=max-message-size:262144\r\n","type":"offer","scalabilityMode":"L1T1"}
[09:58:20.422] info: DefaultStreamer > Player1 :: {"candidate":{"candidate":"candidate:1270427821 1 udp 2122260223 192.168.0.153 49152 typ host generation 0 ufrag MjxY network-id 1","sdpMLineIndex":0,"sdpMid":"0"},"type":"iceCandidate"}
[09:58:20.432] info: Player1 > DefaultStreamer :: {"from":"3569e6ca17714c1889d318b7e05e7701","to":"","type":"iceCandidate","candidate":{"connectionId":"3569e6ca17714c1889d318b7e05e7701","candidate":"candidate:3407833374 1 udp 2122260223 192.168.0.153 49906 typ host generation 0 ufrag ILQ3 network-id 1","sdpMid":"0","sdpMLineIndex":0},"playerId":"Player1"}
[09:58:20.433] info: Player1 > DefaultStreamer :: {"from":"3569e6ca17714c1889d318b7e05e7701","to":"","type":"iceCandidate","candidate":{"connectionId":"3569e6ca17714c1889d318b7e05e7701","candidate":"candidate:3635112706 1 udp 2122194687 192.168.56.1 49907 typ host generation 0 ufrag ILQ3 network-id 2","sdpMid":"0","sdpMLineIndex":0},"playerId":"Player1"}
[09:58:20.438] info: Player1 > DefaultStreamer :: {"from":"3569e6ca17714c1889d318b7e05e7701","to":"","type":"answer","data":{"connectionId":"3569e6ca17714c1889d318b7e05e7701","sdp":"v=0\r\no=- 2982044633834759345 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 49906 UDP/TLS/RTP/SAVPF 127 97 98 99 100 101 102\r\nc=IN IP4 192.168.0.153\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=candidate:3407833374 1 udp 2122260223 192.168.0.153 49906 typ host generation 0 network-id 1\r\na=candidate:3635112706 1 udp 2122194687 192.168.56.1 49907 typ host generation 0 network-id 2\r\na=ice-ufrag:ILQ3\r\na=ice-pwd:ZnTCwkNo3s4uz86pJbJDdzjK\r\na=ice-options:trickle\r\na=fingerprint:sha-256 8E:3F:84:B1:30:C2:A4:97:F0:81:13:15:AB:3B:21:51:9C:D7:08:A9:33:B5:25:1A:99:41:A3:2A:25:3E:EE:24\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=recvonly\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 implementation_name=NvCodec;level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e033\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=127\r\na=rtpmap:98 H264/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 implementation_name=NvCodec;level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=420033\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:100 red/90000\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:102 ulpfec/90000\r\nm=audio 9 UDP/TLS/RTP/SAVPF 96 110\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:ILQ3\r\na=ice-pwd:ZnTCwkNo3s4uz86pJbJDdzjK\r\na=ice-options:trickle\r\na=fingerprint:sha-256 8E:3F:84:B1:30:C2:A4:97:F0:81:13:15:AB:3B:21:51:9C:D7:08:A9:33:B5:25:1A:99:41:A3:2A:25:3E:EE:24\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=recvonly\r\na=rtcp-mux\r\na=rtpmap:96 OPUS/48000/2\r\na=rtcp-fb:96 transport-cc\r\na=fmtp:96 minptime=10;sprop-stereo=1;stereo=1;useinbandfec=1\r\na=rtpmap:110 telephone-event/48000\r\nm=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\nc=IN IP4 0.0.0.0\r\na=ice-ufrag:ILQ3\r\na=ice-pwd:ZnTCwkNo3s4uz86pJbJDdzjK\r\na=ice-options:trickle\r\na=fingerprint:sha-256 8E:3F:84:B1:30:C2:A4:97:F0:81:13:15:AB:3B:21:51:9C:D7:08:A9:33:B5:25:1A:99:41:A3:2A:25:3E:EE:24\r\na=setup:active\r\na=mid:2\r\na=sctp-port:5000\r\na=max-message-size:262144\r\n","type":"answer","polite":false},"playerId":"Player1"}
[09:58:20.456] info: DefaultStreamer > Player1 :: {"candidate":{"candidate":"candidate:1270427821 1 udp 2122260223 192.168.0.153 49153 typ host generation 0 ufrag MjxY network-id 1","sdpMLineIndex":1,"sdpMid":"1"},"type":"iceCandidate"}
[09:58:20.490] info: DefaultStreamer > Player1 :: {"candidate":{"candidate":"candidate:1270427821 1 udp 2122260223 192.168.0.153 49154 typ host generation 0 ufrag MjxY network-id 1","sdpMLineIndex":2,"sdpMid":"2"},"type":"iceCandidate"}
[09:58:20.524] info: DefaultStreamer > Player1 :: {"candidate":{"candidate":"candidate:1253655179 1 udp 1686052607 86.10.51.141 49152 typ srflx raddr 192.168.0.153 rport 49152 generation 0 ufrag MjxY network-id 1","sdpMLineIndex":0,"sdpMid":"0"},"type":"iceCandidate"}
[09:58:20.530] info: Player1 > DefaultStreamer :: {"from":"3569e6ca17714c1889d318b7e05e7701","to":"","type":"iceCandidate","candidate":{"connectionId":"3569e6ca17714c1889d318b7e05e7701","candidate":"candidate:3050343302 1 tcp 1518280447 192.168.0.153 50240 typ host tcptype passive generation 0 ufrag ILQ3 network-id 1","sdpMid":"0","sdpMLineIndex":0},"playerId":"Player1"}
[09:58:20.531] info: Player1 > DefaultStreamer :: {"from":"3569e6ca17714c1889d318b7e05e7701","to":"","type":"iceCandidate","candidate":{"connectionId":"3569e6ca17714c1889d318b7e05e7701","candidate":"candidate:2791606682 1 tcp 1518214911 192.168.56.1 50241 typ host tcptype passive generation 0 ufrag ILQ3 network-id 2","sdpMid":"0","sdpMLineIndex":0},"playerId":"Player1"}
[09:58:20.557] info: DefaultStreamer > Player1 :: {"candidate":{"candidate":"candidate:1253655179 1 udp 1686052607 86.10.51.141 49154 typ srflx raddr 192.168.0.153 rport 49154 generation 0 ufrag MjxY network-id 1","sdpMLineIndex":2,"sdpMid":"2"},"type":"iceCandidate"}
[09:58:20.591] info: DefaultStreamer > Player1 :: {"candidate":{"candidate":"candidate:1253655179 1 udp 1686052607 86.10.51.141 49153 typ srflx raddr 192.168.0.153 rport 49153 generation 0 ufrag MjxY network-id 1","sdpMLineIndex":1,"sdpMid":"1"},"type":"iceCandidate"}
[09:58:20.625] info: DefaultStreamer > Player1 :: {"candidate":{"candidate":"candidate:896979509 1 tcp 1518280447 192.168.0.153 49152 typ host tcptype passive generation 0 ufrag MjxY network-id 1","sdpMLineIndex":0,"sdpMid":"0"},"type":"iceCandidate"}
[09:58:20.678] info: DefaultStreamer > Player1 :: {"candidate":{"candidate":"candidate:896979509 1 tcp 1518280447 192.168.0.153 49153 typ host tcptype passive generation 0 ufrag MjxY network-id 1","sdpMLineIndex":1,"sdpMid":"1"},"type":"iceCandidate"}
[09:58:20.712] info: DefaultStreamer > Player1 :: {"candidate":{"candidate":"candidate:896979509 1 tcp 1518280447 192.168.0.153 49154 typ host tcptype passive generation 0 ufrag MjxY network-id 1","sdpMLineIndex":2,"sdpMid":"2"},"type":"iceCandidate"}
[09:58:48.542] info: > DefaultStreamer :: {"type":"ping","time":1753693128}
[09:58:48.542] info: < DefaultStreamer :: {"type":"pong","time":1753693128}
[09:58:51.022] info: Streamer 'DefaultStreamer' - websocket disconnected.
[09:58:51.023] info: Player1 > DefaultStreamer :: {"type":"playerDisconnected","playerId":"Player1"}
[09:58:51.026] info: Streamer DefaultStreamer (::ffff:127.0.0.1) disconnected.
[09:58:51.027] info: Unregistered player: Player1
[09:58:51.028] info: Player Player1 (::ffff:127.0.0.1) disconnected.

In the log I can see less than I expected, but still enough to prove the theory.

[2025.07.28-08.58.20:023][667]LogPixelStreaming2EpicRtc: RoomSignallingContextObserver::OnJoined. Remote participant joined the room. participantId=[Player1] roomId=[DefaultStreamer] localParticipantId=[DefaultStreamer] state=[Joined]
[2025.07.28-08.58.20:323][687]LogPixelStreaming2RTC: Player (Player1) joined
[2025.07.28-08.58.20:356][689]LogPixelStreaming2EpicRtc: OnMediaTrack.  trackId=[video] ssrc=[0] streamId=[pixelstreaming_video_stream_id] roomId=[DefaultStreamer] localParticipantId=[DefaultStreamer] state=[Joined]
[2025.07.28-08.58.20:357][689]LogPixelStreaming2EpicRtc: OnMediaTrack.  trackId=[audio] ssrc=[0] streamId=[pixelstreaming_audio_stream_id] roomId=[DefaultStreamer] localParticipantId=[DefaultStreamer] state=[Joined]
[2025.07.28-08.58.20:360][689]LogPixelStreaming2RTC: FEpicRtcStreamer::OnVideoTrackUpdate(Participant [Player1], VideoTrack [video], IsRemote[false])
[2025.07.28-08.58.20:360][690]LogPixelStreaming2RTC: FEpicRtcStreamer::OnAudioTrackUpdate(Participant [Player1], AudioTrack [audio, IsRemote [false]])
[2025.07.28-08.58.20:360][690]LogAudioMixer: Display: Sending SubmixBufferListener 'Unset' register command...
[2025.07.28-08.58.20:360][690]LogAudioMixer: Display: Submix buffer listener 'Unset' registered with submix 'MasterSubmixDefault'
[2025.07.28-08.58.20:360][690]LogPixelStreaming2RTC: FEpicRtcStreamer::OnDataTrackUpdate(Participant [Player1], DataTrack [Player1])
[2025.07.28-08.58.20:461][698]LogPixelStreaming2EpicRtc: Error: ConnectionInternal::AddICECandidate. Add ICE candidate error - The remote description was null sessionId=[Player1] localParticipantId=[DefaultStreamer] state=[New]
[2025.07.28-08.58.20:461][698]LogPixelStreaming2EpicRtc: Error: ConnectionInternal::AddICECandidate. Add ICE candidate error - The remote description was null sessionId=[Player1] localParticipantId=[DefaultStreamer] state=[New]
[2025.07.28-08.58.50:738][750]LogRHI: Error: Breadcrumbs 'RHIThread'
 - SceneRender - ViewFamilies
 - Frame 2708

[2025.07.28-08.58.50:738][750]LogRHI: Error: Breadcrumbs 'Parallel'
 - Scene
 - RenderGraphExecute - /ViewFamilies
 - SceneRender - ViewFamilies
 - Frame 2713

[2025.07.28-08.58.50:738][750]LogWindows: Could not start crash report client using ../../../Engine/Binaries/Win64/CrashReportClient-Win64-Debug.exe
[2025.07.28-08.58.50:738][750]LogMemory: Platform Memory Stats for Windows
[2025.07.28-08.58.50:738][750]LogMemory: Process Physical Memory: 1355.88 MB used, 1726.85 MB peak
[2025.07.28-08.58.50:738][750]LogMemory: Process Virtual Memory: 3584.84 MB used, 3846.60 MB peak
[2025.07.28-08.58.50:738][750]LogMemory: Physical Memory: 25259.70 MB used,  40161.95 MB free, 65421.64 MB total
[2025.07.28-08.58.50:738][750]LogMemory: Virtual Memory: 37090.52 MB used,  38059.12 MB free, 75149.64 MB total
[2025.07.28-08.58.50:738][750]Message dialog closed, result: Ok, title: The UE-Broadcaster_5_4 Game has crashed and will close, text: Fatal error!


[2025.07.28-08.58.50:738][750]LogThreadingWindows: Error: Runnable thread Pixel Streaming PixelStreaming Thread crashed.
[2025.07.28-08.58.50:738][750]LogWindows: Error: === Critical error: ===
[2025.07.28-08.58.50:738][750]LogWindows: Error: 
[2025.07.28-08.58.50:738][750]LogWindows: Error: Fatal error!
[2025.07.28-08.58.50:738][750]LogWindows: Error: 
[2025.07.28-08.58.50:738][750]LogWindows: Error: Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000000
[2025.07.28-08.58.50:738][750]LogWindows: Error: 
[2025.07.28-08.58.50:738][750]LogWindows: Error: [Callstack] 0x00007ff61eda50ad Broadcaster_5_4.exe!EpicRtc::ConnectionInternal::SetRemoteSDP() []
[2025.07.28-08.58.50:738][750]LogWindows: Error: [Callstack] 0x00007ff61edcb1f8 Broadcaster_5_4.exe!EpicRtc::RoomSignallingContextObserver::OnSetRemoteSDP() []
[2025.07.28-08.58.50:738][750]LogWindows: Error: [Callstack] 0x00007ff61edd34d0 Broadcaster_5_4.exe!EpicRtc::PS::RoomSignallingContext::OnMessage() []
[2025.07.28-08.58.50:738][750]LogWindows: Error: [Callstack] 0x00007ff61ed44c1d Broadcaster_5_4.exe!EpicRtc::PS::SignallingSession::OnMessage() []
[2025.07.28-08.58.50:738][750]LogWindows: Error: [Callstack] 0x00007ff61edd0da6 Broadcaster_5_4.exe!EpicRtc::WebsocketObserverWrapper::OnMessage() []
[2025.07.28-08.58.50:738][750]LogWindows: Error: [Callstack] 0x00007ff61ecdc910 Broadcaster_5_4.exe!EpicRtc::TickableWebsocketFactoryWrapper::Count() []
[2025.07.28-08.58.50:738][750]LogWindows: Error: [Callstack] 0x00007ff61ecdc8c3 Broadcaster_5_4.exe!EpicRtc::TickableWebsocketFactoryWrapper::Count() []
[2025.07.28-08.58.50:738][750]LogWindows: Error: [Callstack] 0x00007ff61ecdc707 Broadcaster_5_4.exe!EpicRtc::TickableWebsocketFactoryWrapper::Count() []
[2025.07.28-08.58.50:738][750]LogWindows: Error: [Callstack] 0x00007ff61ecea684 Broadcaster_5_4.exe!std::_Func_class<void>::operator()() []
[2025.07.28-08.58.50:738][750]LogWindows: Error: [Callstack] 0x00007ff61ecea3e3 Broadcaster_5_4.exe!EpicRtc::TickableQueue::Tick() []
[2025.07.28-08.58.50:738][750]LogWindows: Error: [Callstack] 0x00007ff61ec8f3e8 Broadcaster_5_4.exe!EpicRtc::Conference::Tick() []
[2025.07.28-08.58.50:738][750]LogWindows: Error: [Callstack] 0x00007ff6282478ba Broadcaster_5_4.exe!UE::PixelStreaming2::FEpicRtcTickConferenceTask::Tick() [D:\UE5\UE5.6\Engine\Plugins\Media\PixelStreaming2\Source\PixelStreaming2RTC\Internal\EpicRtcConferenceUtils.h:45]
[2025.07.28-08.58.50:738][750]LogWindows: Error: [Callstack] 0x00007ff6281485bd Broadcaster_5_4.exe!UE::PixelStreaming2::FPixelStreamingRunnable::Tick() [D:\UE5\UE5.6\Engine\Plugins\Media\PixelStreaming2\Source\PixelStreaming2\Private\Thread.cpp:74]
[2025.07.28-08.58.50:738][750]LogWindows: Error: [Callstack] 0x00007ff62814504d Broadcaster_5_4.exe!UE::PixelStreaming2::FPixelStreamingRunnable::Run() [D:\UE5\UE5.6\Engine\Plugins\Media\PixelStreaming2\Source\PixelStreaming2\Private\Thread.cpp:38]
[2025.07.28-08.58.50:738][750]LogWindows: Error: [Callstack] 0x00007ff61fe6ba18 Broadcaster_5_4.exe!FRunnableThreadWin::Run() [D:\UE5\UE5.6\Engine\Source\Runtime\Core\Private\Windows\WindowsRunnableThread.cpp:159]
[2025.07.28-08.58.50:738][750]LogWindows: Error: [Callstack] 0x00007ff61fe6470f Broadcaster_5_4.exe!FRunnableThreadWin::GuardedRun() [D:\UE5\UE5.6\Engine\Source\Runtime\Core\Private\Windows\WindowsRunnableThread.cpp:79]
[2025.07.28-08.58.50:738][750]LogWindows: Error: [Callstack] 0x00007ffe3dbc7374 KERNEL32.DLL!UnknownFunction []
[2025.07.28-08.58.50:738][750]LogWindows: Error: 
[2025.07.28-08.58.50:738][750]LogWindows: Error: Crash in runnable thread Pixel Streaming PixelStreaming Thread

Hi Eden,

I have noticed something that may be related to what I am seeing.

I captured an Answer message from UE5.4 and looked at it.

The structure is very different, although the contents of the message are pretty much the same.

The 5.4 version only contains two fields in the JSON.

It has a “type” field , (set to “answer”) and a “sdp” field containing the actual data

All the other clients I use have the formal structure with four fields.

“from”, “to”, “type”, “answer”

The answer field contains the sdp

I am going to try and create a message that matches the 5.4 structure and see what happens

Hi Eden, tested against pixel streaming 1 and that worked.

Now going to test against pixel streaming 2

Just like you say, the answer embeds sdp entry in the data entry. This unfortunately will cause a crash that I would like to apologizes for and will push to get that resolved. I would expect to see a error message from the logs ifLogPixelStreaming2WebRtc is set.

PixelStreaming2 player should not create an answer that looks like this, and should follow the answer in PixelStreamingInfrastructure/Common/protobuf/signalling_messages.proto at master · EpicGamesExt/PixelStreamingInfrastructure · GitHub
If PixelStreaming2 player from UE 5.6 is sending an answer with sdp inside data then I would like to know.

Enabling very verbose logging in both the streamer and player will log the SDP that the streamer and player use. In vscode it can be set with "-LogCmds=LogPixelStreaming2 VeryVerbose,LogPixelStreaming2EpicRtc VeryVerbose,LogPixelStreaming2WebRtc VeryVerbose,LogPixelStreaming2RTC VeryVerbose".

Regards
Eden

Hi Eden,

Your code does not create an answer with that format, it is the webrtc library I use that creates the answer

I have tested with pixel streaming 2 , and the stream never starts. I am looking into why.

There are no errors though, no crashes, I get the full message flow, just no broadcast video.

Will update if I find anything

Cheers
Paul

In case it is useful, here is the log for an PS2 run that failed.

[11:08:26.983] info: < Player1 :: {"type":"streamerList","ids":["DefaultStreamer"]}
[11:08:27.005] info: > Player1 :: {"type":"subscribe","streamerId":"DefaultStreamer"}
[11:08:27.005] info: Player1 > DefaultStreamer :: {"type":"playerConnected","dataChannel":true,"sfu":false,"playerId":"Player1"}
[11:08:27.052] info: DefaultStreamer > Player1 :: {"multiplex":true,"sdp":"v=0\r\no=- 5205624835208748599 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 97 98 99 100 101 102\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:Yjer\r\na=ice-pwd:fcnUZY2AXd6NOpGOwc2AAqd3\r\na=ice-options:trickle\r\na=fingerprint:sha-256 BE:3F:E5:76:92:B3:EC:83:D2:C9:7A:33:51:3C:0C:15:22:6D:38:4F:10:B3:47:DF:7F:9C:DE:C9:1C:C1:B9:72\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=sendrecv\r\na=msid:pixelstreaming_video_stream_id video\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:97 rtx/90000\r\na=fmtp:97 apt=127\r\na=rtpmap:98 H264/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 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42001f\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:100 red/90000\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:102 ulpfec/90000\r\na=ssrc-group:FID 981631311 2905191845\r\na=ssrc:981631311 cname:R+ZVwAKbEKPIyK30\r\na=ssrc:981631311 msid:pixelstreaming_video_stream_id video\r\na=ssrc:2905191845 cname:R+ZVwAKbEKPIyK30\r\na=ssrc:2905191845 msid:pixelstreaming_video_stream_id video\r\nm=audio 9 UDP/TLS/RTP/SAVPF 96 110\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:Yjer\r\na=ice-pwd:fcnUZY2AXd6NOpGOwc2AAqd3\r\na=ice-options:trickle\r\na=fingerprint:sha-256 BE:3F:E5:76:92:B3:EC:83:D2:C9:7A:33:51:3C:0C:15:22:6D:38:4F:10:B3:47:DF:7F:9C:DE:C9:1C:C1:B9:72\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=sendrecv\r\na=msid:pixelstreaming_audio_stream_id audio\r\na=rtcp-mux\r\na=rtpmap:96 OPUS/48000/2\r\na=rtcp-fb:96 transport-cc\r\na=rtpmap:110 telephone-event/48000\r\na=ssrc:1440010067 cname:R+ZVwAKbEKPIyK30\r\na=ssrc:1440010067 msid:pixelstreaming_audio_stream_id audio\r\nm=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\nc=IN IP4 0.0.0.0\r\na=ice-ufrag:Yjer\r\na=ice-pwd:fcnUZY2AXd6NOpGOwc2AAqd3\r\na=ice-options:trickle\r\na=fingerprint:sha-256 BE:3F:E5:76:92:B3:EC:83:D2:C9:7A:33:51:3C:0C:15:22:6D:38:4F:10:B3:47:DF:7F:9C:DE:C9:1C:C1:B9:72\r\na=setup:actpass\r\na=mid:2\r\na=sctp-port:5000\r\na=max-message-size:262144\r\n","type":"offer","scalabilityMode":"L1T1"}
[11:08:27.085] info: DefaultStreamer > Player1 :: {"candidate":{"candidate":"candidate:229288910 1 udp 2122260223 10.132.0.7 49152 typ host generation 0 ufrag Yjer network-id 1 network-cost 50","sdpMLineIndex":0,"sdpMid":"0"},"type":"iceCandidate"}
[11:08:27.111] info: Player1 > DefaultStreamer :: {"type":"answer","sdp":"v=0\r\no=- 4403646062094292664 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 53658 UDP/TLS/RTP/SAVPF 127 97 98 99 100 101 102\r\nc=IN IP4 192.168.0.153\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=candidate:2073698644 1 udp 2122260223 192.168.0.153 53658 typ host generation 0 network-id 1\r\na=candidate:1871235353 1 udp 2122194687 192.168.56.1 53659 typ host generation 0 network-id 2\r\na=ice-ufrag:bJvJ\r\na=ice-pwd:32iQbvlIzQMNCYJdH+s6UDvw\r\na=ice-options:trickle\r\na=fingerprint:sha-256 3D:49:BE:12:22:07:36:B8:36:24:47:1C:15:18:AF:97:08:56:89:C5:DF:8D:A0:AC:C2:83:49:C2:65:69:0E:FE\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=recvonly\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 implementation_name=NvCodec;level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e033\r\na=rtpmap:97 rtx/90000\r\na=fmtp:97 apt=127\r\na=rtpmap:98 H264/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 implementation_name=NvCodec;level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=420033\r\na=rtpmap:99 rtx/90000\r\na=fmtp:99 apt=98\r\na=rtpmap:100 red/90000\r\na=rtpmap:101 rtx/90000\r\na=fmtp:101 apt=100\r\na=rtpmap:102 ulpfec/90000\r\nm=audio 9 UDP/TLS/RTP/SAVPF 96 110\r\nc=IN IP4 0.0.0.0\r\na=rtcp:9 IN IP4 0.0.0.0\r\na=ice-ufrag:bJvJ\r\na=ice-pwd:32iQbvlIzQMNCYJdH+s6UDvw\r\na=ice-options:trickle\r\na=fingerprint:sha-256 3D:49:BE:12:22:07:36:B8:36:24:47:1C:15:18:AF:97:08:56:89:C5:DF:8D:A0:AC:C2:83:49:C2:65:69:0E:FE\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=recvonly\r\na=rtcp-mux\r\na=rtpmap:96 OPUS/48000/2\r\na=rtcp-fb:96 transport-cc\r\na=fmtp:96 minptime=10;sprop-stereo=1;stereo=1;useinbandfec=1\r\na=rtpmap:110 telephone-event/48000\r\nm=application 9 UDP/DTLS/SCTP webrtc-datachannel\r\nc=IN IP4 0.0.0.0\r\na=ice-ufrag:bJvJ\r\na=ice-pwd:32iQbvlIzQMNCYJdH+s6UDvw\r\na=ice-options:trickle\r\na=fingerprint:sha-256 3D:49:BE:12:22:07:36:B8:36:24:47:1C:15:18:AF:97:08:56:89:C5:DF:8D:A0:AC:C2:83:49:C2:65:69:0E:FE\r\na=setup:active\r\na=mid:2\r\na=sctp-port:5000\r\na=max-message-size:262144\r\n","playerId":"Player1"}
[11:08:27.118] info: DefaultStreamer > Player1 :: {"candidate":{"candidate":"candidate:229288910 1 udp 2122260223 10.132.0.7 49153 typ host generation 0 ufrag Yjer network-id 1 network-cost 50","sdpMLineIndex":1,"sdpMid":"1"},"type":"iceCandidate"}
[11:08:27.151] info: DefaultStreamer > Player1 :: {"candidate":{"candidate":"candidate:229288910 1 udp 2122260223 10.132.0.7 49154 typ host generation 0 ufrag Yjer network-id 1 network-cost 50","sdpMLineIndex":2,"sdpMid":"2"},"type":"iceCandidate"}
[11:08:27.185] info: DefaultStreamer > Player1 :: {"candidate":{"candidate":"candidate:3041082596 1 udp 1686052607 35.187.18.250 49152 typ srflx raddr 10.132.0.7 rport 49152 generation 0 ufrag Yjer network-id 1 network-cost 50","sdpMLineIndex":0,"sdpMid":"0"},"type":"iceCandidate"}
[11:08:27.218] info: DefaultStreamer > Player1 :: {"candidate":{"candidate":"candidate:3041082596 1 udp 1686052607 35.187.18.250 49154 typ srflx raddr 10.132.0.7 rport 49154 generation 0 ufrag Yjer network-id 1 network-cost 50","sdpMLineIndex":2,"sdpMid":"2"},"type":"iceCandidate"}
[11:08:27.252] info: DefaultStreamer > Player1 :: {"candidate":{"candidate":"candidate:3041082596 1 udp 1686052607 35.187.18.250 49153 typ srflx raddr 10.132.0.7 rport 49153 generation 0 ufrag Yjer network-id 1 network-cost 50","sdpMLineIndex":1,"sdpMid":"1"},"type":"iceCandidate"}
[11:08:27.285] info: DefaultStreamer > Player1 :: {"candidate":{"candidate":"candidate:4205532056 1 udp 41885695 35.187.18.250 61227 typ relay raddr 35.187.18.250 rport 49153 generation 0 ufrag Yjer network-id 1 network-cost 50","sdpMLineIndex":1,"sdpMid":"1"},"type":"iceCandidate"}
[11:08:27.318] info: DefaultStreamer > Player1 :: {"candidate":{"candidate":"candidate:4205532056 1 udp 41885695 35.187.18.250 50228 typ relay raddr 35.187.18.250 rport 49154 generation 0 ufrag Yjer network-id 1 network-cost 50","sdpMLineIndex":2,"sdpMid":"2"},"type":"iceCandidate"}
[11:08:27.352] info: DefaultStreamer > Player1 :: {"candidate":{"candidate":"candidate:4205532056 1 udp 41885695 35.187.18.250 63701 typ relay raddr 35.187.18.250 rport 49152 generation 0 ufrag Yjer network-id 1 network-cost 50","sdpMLineIndex":0,"sdpMid":"0"},"type":"iceCandidate"}
[11:08:27.385] info: DefaultStreamer > Player1 :: {"candidate":{"candidate":"candidate:4076896090 1 tcp 1518280447 10.132.0.7 49152 typ host tcptype passive generation 0 ufrag Yjer network-id 1 network-cost 50","sdpMLineIndex":0,"sdpMid":"0"},"type":"iceCandidate"}

Hi Eden,

New update

With both pixel streaming 1 and pixel streaming 2 running locally using the signalling server that ships with UE5.6 PixelStreaming2, everything works.

I get video and audio perfectly.

If I run the broad caster on our remote server neither works

Not pixel streaming 1 or 2

I get no errors at all anywhere

Sigh.

Looking for a wall I have not headbutted yet.

Cheers
Paul

Hi Eden,

I figured it out.

The library I was using, for some totally unfathomable reason, had an immutable RTCConfiguration.

So when I got the “config” message from UE5, I created a new config and sent it to the library, which ignored it.

So I fixed that , and now I have fully working streaming.

I am moving on to using the data channel for event handling, but thanks for your time.

Cheers
Paul