Closed lukehb closed 3 years ago
I have now determined that this was a symptom of the manner in which the ue4-runtime container images were configured. Up until now, I'd configured the container to expect a PulseAudio socket bind-mounted from the host system if audio output was required, which was useful when debugging audio (since you could hear the output on the host system) but prevented audio from functioning correctly when the bind-mount was missing. I have now updated the ue4-runtime Dockerfiles to automatically spawn a PulseAudio daemon inside the container as needed, and added a new set of variants tagged with the suffix -hostaudio
that provide the old behaviour for use cases that need it. Simply pulling the new version of your desired ue4-runtime image tag and rebuilding your containers will fix this problem for Pixel Streaming applications and allow audio output to function correctly.
Many users are getting errors initialising WebRTC inside containers when using our Pixel Streaming for Linux 4.25 in containers.
User's who run into this problem typically appear to have a stack trace that looks something like this:
We believe there is a way to rebuild the WebRTC binaries to disable the need for Alsa. We will track that work here.
In addition to investigating alternate ways to build WebRTC, we will work on providing a run-time container image that sets up a pulse audio server in the container for you. You can track this progress at: https://github.com/adamrehn/ue4-runtime
Some workarounds in the meantime:
Bind-mounting the host system's pulse audio into the container, like so:
sudo docker run --rm --gpus=all -v ${XDG_RUNTIME_DIR}/pulse/native:${XDG_RUNTIME_DIR}/pulse/native --network=host your-project-here -PixelStreamingIP=127.0.0.1 -PixelStreamingPort=8888
Disable WebRTC's audio entirely by passing in a
-NOAUDIO
flag.