Pixel Streaming not working in Chrome version 89

Pixel Streaming was working fine in previous versions of Google Chrome (88 and earlier), but it now makes the unreal game crash when a user tries to connect. (in both the editor and packaged game)

This happens since google chrome version 89, and same thing in Microsoft Edge.

I get this error message in the editor:

Assertion failed: Player
[File:D:/Build/++UE4/Sync/Engine/Plugins/Media/PixelStreaming/Source/PixelStreaming/
Private/Streamer.cpp]
[Line: 173] player 101 not found

And these logs:

PixelStreamingWebRTC: Error:
(webrtcsdp.cc:370): Failed to parse:
“a=extmap-allow-mixed”. Reason:
Expects at least 2 fields.
]LogPixelStreamingSS: Error: Failed to
parse answer’s SDP

Anyone else has this issue ? Any idea on how to resolve it ?

we have the same issue.

We have the same issue, as a temporary fix, you could use the Opera browser which seems to work by using an older WebRTC release.

The solution was found here:
https://forums.unrealengine.com/unreal-engine/feedback-for-epic/1869186-pixel-streaming-not-working-in-chrome-version-89-ue4-will-crash-when-i-access-signallingwebserver

please remove “a=extmap-allow-mixed” string in offer from webRtcPlayer.js in signalwebserver code

app.js

function setupWebRtcPlayer(htmlElement, config)
{
	webRtcPlayerObj = new webRtcPlayer({ peerConnectionOptions: config.peerConnectionOptions });
	htmlElement.appendChild(webRtcPlayerObj.video);
	htmlElement.appendChild(freezeFrameOverlay);

	webRtcPlayerObj.onWebRtcOffer = function (offer)
	{
		if (ws && ws.readyState === WS_OPEN_STATE) {
			offer.sdp = offer.sdp.replace("a=extmap-allow-mixed\r\n", "")
			let offerStr = JSON.stringify(offer);
			console.log(`-> SS: offer:\n${offerStr}`);
			ws.send(offerStr);
		}
	};
2 Likes

Thank for this… life saver!

Hello guys,

we have the problem that after 120 seconds we disconnects from the server. We have implemented the changes from above but unfortunately it does not work. We use 4.27

In the console we get the error
“15:57:06.768 player 101 connection closed: 1006”.

and in the browser it says
“app.js:385 Could not player video stream because webRtcPlayerObj.video was not valid.”

The problem only occurs when we try access via https. Via http everything works fine

thank you guys

What cloud hosting are you using? On AWS behind a ALB there is a default timeout for all requests (including ws which is just one long request at least that’s how it’s treated by the ALB)