Streaming of kit-app-template docker container

Hi,
I am trying to stream containerized (docker) Omniverse kit-app-template application (106.2) to other machines.
Container created and launched in Linux. It is streamed successfully locally (in this very Linux machine):
http://public_ip:8011/streaming/webrtc-demo/?server=public_ip

But it is not streamed to other machines (outside localhost), if I put the address above into the browser.
Ports 3478 and 8011 are open. Here is my turnserver.config:

listening-port=3478
listening-ip=<local ip>
relay-ip=<local ip>
fingerprint
user=admin:admin
lt-cred-mech
realm=<public ip>
total-quota=1000000
no-stdout-log
cli-password=1234
log-file=C:\Coturn\coturn.log

Turnserver is run: turnserver -o -c turnserver.conf

Container run with the command:

sudo ./repo.sh launch --container -n my_company.my_editor_streaming.kit --/exts/omni.services.streamclient.webrtc/ice_servers/1/urls/0="turn:<public ip>:3478?transport=udp" --/exts/omni.services.streamclient.webrtc/ice_servers/1/urls/1="turn:<public ip>:3478?transport=tcp" --/exts/omni.services.streamclient.webrtc/ice_servers/1/username="admin" --/exts/omni.services.streamclient.webrtc/ice_servers/1/credential="admin"

As an alternative, tried also to put turnserver configuration into .kit file:

exts."omni.services.streamclient.webrtc".enabled = true
exts."omni.services.streamclient.webrtc"."ice_servers[1].urls[0]" = "turn:<public ip>:3478?transport=udp"
exts."omni.services.streamclient.webrtc"."ice_servers[1].urls[1]" = "turn:<public ip>:3478?transport=tcp"
exts."omni.services.streamclient.webrtc"."ice_servers[1].username" = "admin"
exts."omni.services.streamclient.webrtc"."ice_servers[1].credential" = "admin"

My .kit file has enabled extensions:

"omni.services.streamclient.webrtc" = {}
"omni.kit.livestream.webrtc" = {}

Could you please suggest how to fix it? How to enable the streaming of containerized kit-app-template to other machines?

There are two ways to stream a Kit application.

  1. Use local streaming using omni.kit.livestream.webrtc
  2. Use Omniverse app streaming API Omniverse Application Streaming API | NVIDIA NGC

You can stream within your own local network (inside NAT devices) using the instructions here:
https://docs.omniverse.nvidia.com/ovc/latest/developing_for_ovc/developing.html#developing-an-ovc-version-of-your-application

Our supported method of streaming uses Stream Client Library which has a sample here: Containerizing and Local Validation — Omniverse Cloud latest documentation

This solution won’t work through NAT devices due to signalling and streaming mismatches.

Secondly, if you need to stream at scale, our solution involved Omniverse Application Streaming API which is deployed on top of a Kubernetes infrastructure: Overview — Omniverse Application Streaming API latest documentation

Thanks for your reply!
Issue is fixed. The matter was that turnserver args were not applied correctly when used in command line or kit file. I modified tools/containers/entrypoint.sh.j2:

ARGS=(
"/app/apps/$KIT_FILE_NAME_BREADCRUMB"
$KIT_ARGS_BREADCRUMB
$${NVDA_KIT_ARGS:-""}
--enable omni.services.streamclient.webrtc
--/exts/omni.services.streamclient.webrtc/ice_servers/1/urls/0="turn:public_ip:3478?transport=udp"
--/exts/omni.services.streamclient.webrtc/ice_servers/1/urls/1="turn:public_ip:3478?transport=tcp"
--/exts/omni.services.streamclient.webrtc/ice_servers/1/username="admin"
--/exts/omni.services.streamclient.webrtc/ice_servers/1/credential="admin"
)

Now container streams via webrtc to other devices.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.