Is WebRTC broken for everyone?

I follow the instructions here: WebRTC Browser Client — Omniverse Extensions documentation

But when I hit the play button all I see is a grey square:

Hello @adammpolak! I was able to reproduce this issue on my computer as well. I am sending this over to the dev team to fix!

A development ticket was created from this post. OM-77398: Is WebRTC broken for everyone?

Really appreciate it @WendyGram, thank you!

Hi,

We (Volvo Cars) are running into the same issue with a kit app where the WebRTC streaming client works fine on localhost (a Windows Virtual Machine on Azure), but the moment we try and access that url from outside of the VM, we see exactly the same thing as in the screenshot.

We have followed the instructions here: WebRTC Browser Client — Omniverse Extensions latest documentation, we’ve enabled the relevant ports for the WebRTC connection to be established as well as setting up a dedicated TURN server to support it.

What we are seeing from the chrome://webrtc-internals diagnostics page is that it is not able to establish an ICE candidate pair between the VM and the browser on another computer.

Happy to provide any further information that can assist.

Hi @paulbjensen are you using Audio2Face at Volvo Cars or this is happening in other Omniverse apps?

Hi @Ehsan.HM, thanks for the reply.

We are not using Audio2Face. The versions of the apps/libraries that we have installed are:

Apps:

  • Code (2022.3.3)
  • USD Composer (2022.3.3)
    File Management:
  • Cache (2022.2.0)

A colleague has discovered an issue that may be the root cause - the way that the livestream client is attempting to establish an ICE connection using a private IP address.

So the host server is accessible via both a private IP address and a public IP address. We have the app accessible via a public IP address, but even when we try to connect to the WebRTC streaming client url using that, the ICE connection is communicating the Private IP address for the Remote Offer.

The Private IP address is accessible only via the VPN within Azure, and the TURN server is hosted in AWS, so therefore the TURN server is not able to connect to the host machine.

My colleague indicates that it may be an issue embedded within the extension:

The extension should do a STUN check and return that ip instead of the IP from a local DNS lookup - but I don’t think it is doing that. The faulty extension is very likely omni.services.streaming.manager and the IP address utility is at omni\services\streaming\manager\utils.py within it. But I found many instances of this library - so I’m unsure of the exact path.

It looks like we need to make the extension find the public IP address for the host machine and return that during the ICE connection part of the WebRTC streaming setup.