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