Skip to content

Specify vp8 encoder when doing linux stream test#241

Closed
lukehb wants to merge 2 commits intomasterfrom
fix-linux-stream-test
Closed

Specify vp8 encoder when doing linux stream test#241
lukehb wants to merge 2 commits intomasterfrom
fix-linux-stream-test

Conversation

@lukehb
Copy link
Copy Markdown
Contributor

@lukehb lukehb commented Aug 16, 2024

As the stream test occurs on GHA that has no GPU we must specify use of vp8 so we hit a CPU encoding code path.

Relevant components:

  • Github actions

Problem statement:

The Linux stream currently streams a black stream.

Solution

This PR explicitly sets vp8 encoding so we use a cpu encoding code path. This is necessary as the Github actions we use do not have a GPU attached.

lukehb added 2 commits August 16, 2024 14:45
As the stream test occurs on GHA that has no GPU we must specify use of vp8 so we hit a CPU encoding code path.
@lukehb
Copy link
Copy Markdown
Contributor Author

lukehb commented Aug 16, 2024

It doesn't actually fix it though....

@PhDittmann
Copy link
Copy Markdown

If you're using a packaged UE 5.4.x application, this topic might be interesting: https://forums.unrealengine.com/t/does-vp8-vp9-work-in-packaged-pixelstreaming-builds-linux/1977282

@lukehb
Copy link
Copy Markdown
Contributor Author

lukehb commented Aug 20, 2024

@PhDittmann I just replied to your message there (although pending approval).

It seems 5.4 was shipped with ABI mismatch between WebRTC and VPX on Linux.

Would you mind transplanting this into your Linux UE source, recompiling, and repackaging: https://drive.google.com/file/d/1Ny8z9I2KzK_ywoBEnQnP0rVBU-vM-I4G/view?usp=sharing

@PhDittmann
Copy link
Copy Markdown

PhDittmann commented Aug 21, 2024

I replaced the libs in Engine/Source/ThirdParty/WebRTC/5414/Lib/Linux/x86_64-unknown-linux-gnu/Release and it works! (except for Firefox)

Tested with UE 5.4.2, streaming within the UE Editor and after packaging, up to 3 clients simultaneously, VP8 and VP9, Brave, Chrome, Duckduckgo, and Firefox.

  • libdenormal_disabler.a is identical.
  • libdenormal_disabler.a, libfield_trial.a, libmetrics.a and most of the includes don't have u+w permission anymore.
  • Files have Windows line-endings
  • NOTE: Sometimes it crashes during negotiation. Needs further investigation.

Mozilla Firefox 129.0 (64-bit) on Fedora and Android stops at 'WEBRTC CONNECTION NEGOTIATED'. The console shows the error Uncaught (in promise) DOMException: Cannot set ICE candidate for level=0 mid=0: No such transceiver.

@lukehb
Copy link
Copy Markdown
Contributor Author

lukehb commented Aug 21, 2024

@PhDittmann That is great news! Thanks so much for testing!

Files have Windows line-endings

Yeah sorry about that, I am on Windows when I sent you those and P4 did me dirty.

Mozilla Firefox 129.0 (64-bit) on Fedora and Android stops at 'WEBRTC CONNECTION NEGOTIATED'. The console shows the error Uncaught (in promise) DOMException: Cannot set ICE candidate for level=0 mid=0: No such transceiver.

Very curious. Are you certain you have this frontend change applied? #204

@PhDittmann
Copy link
Copy Markdown

You're right. I tested with an outdated version. PixelStreamingInfrastructure 5.4-1.1.7+ solves the Firefox issue.

Thanks for your quick responses!

@lukehb
Copy link
Copy Markdown
Contributor Author

lukehb commented Aug 23, 2024

Closing for now, we will revisit if we get it working.

@lukehb lukehb closed this Aug 23, 2024
@Belchy06 Belchy06 deleted the fix-linux-stream-test branch May 1, 2025 00:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants