ICE server configuration in Pixelstreaming2/EpicRtc

We recently migrated from PixelStreaming to PixelStreaming2 and lost our ability to establish a connection when using a custom TURN server.

In v1, ICE servers were provided via the signaling config message and injected into WebRTC RTCConfiguration. In v2, the code leaves ICE servers empty with comments that EpicRtc handles them internally, and there are migration TODOs referencing “RTCP-7032”.

Key references:

EpicRTCStreamer.cpp

EpicRtcConnectionConfig ConnectionConfig = {
     // This can stay empty because EpicRtc handles the ice servers internally
     ._iceServers = { ._ptr = nullptr, ._size = 0 },
    ._portAllocator = PortAllocator,
    ._bitrate = Bitrate,
    ._iceConnectionPolicy = EpicRtcIcePolicy::All,
    ._disableTcpCandidates = false
};

PixelStreaming2RTCPlayer.cpp

EpicRtcConnectionConfig ConnectionConfig = {
    // TODO (Migration): RTCP-7032 This info usually comes from the OnConfig signalling message
    ._iceServers = EpicRtcIceServerSpan{ ._ptr = nullptr, ._size = 0 },
    ._iceConnectionPolicy = EpicRtcIcePolicy::All,
    ._disableTcpCandidates = false
};

PixelStreaming2Peer.cpp

EpicRtcConnectionConfig ConnectionConfig = {
    // TODO (Migration): RTCP-7032 This info usually comes from the OnConfig signalling message
    ._iceServers = EpicRtcIceServerSpan{ ._ptr = nullptr, ._size = 0 },
    ._iceConnectionPolicy = EpicRtcIcePolicy::All,
    ._disableTcpCandidates = false
};

Questions:

  • What is the intended source of ICE servers in PixelStreaming2? Is EpicRtc expected to fetch them via its signalling/room flow, and if so, which message/config on the server side provides the list? Is any documentation on libepicrtc available?

  • How should we supply custom STUN/TURN from Unreal today? Is explicitly populating EpicRtcConnectionConfig._iceServers supported and recommended, or is there a CVar/config pathway we should use?

  • Are there plans (RTCP-7032) to restore a v1-style “config” path that delivers iceServers from the signalling server to the UE side? If so, what’s the timeline or recommended stopgap?

Guidance on the supported mechanism in PixelStreaming2 would be greatly appreciated.

Cheers,
Stephan