Windows和Linux上(包含Docker):Isaac Sim实现WebRTC远程串流
1.目的及应用价值
Isaac Sim 需要强大的 GPU 来支撑其高强度的物理仿真与渲染能力。但如果只需用作营销展示、远程调试或单纯查看运行状态,我们可以通过 WebRTC 技术远程连接服务器上的 Isaac Sim。这样,即使在无 GPU 的轻薄本上,也能流畅观看并交互操作 Isaac Sim(支持内网和公网连通)。
- ARM 架构(
aarch64)默认不支持完整的 Livestreaming 功能。 - A100 显卡不支持 Livestreaming!因为实时视频流高度依赖 NVENC(NVIDIA 硬件编码器),而 A100 专为计算设计,物理上被阉割了 NVENC 模块。
2. 环境与条件准备
实现串流需要两台设备:
- 服务端(带强力 GPU):负责运行 Isaac Sim。支持 Windows、Ubuntu 系统(支持原生解压安装或 Docker 容器部署)。
- 客户端(本地电脑,无需强 GPU):负责远程观看与操作。安装Isaac Sim WebRTC Streaming Client。
3. 情况一:Windows 服务端 ➜ Windows 客户端
对于两台windows系统,一台通过官方压缩包装好了Isaac Sim5.1.0版本(目前最稳定版本),另一台安装好了对应windows版本的Isaac Sim WebRTC Streaming Client


3.1 内网连接(同一局域网下)
在同一个网络下操作最简单,核心步骤是开放端口并绑定 IP:
a.放防火墙端口
服务端需要开启UDP port 47998和TCP port 49100端口,然后运行无头isaac sim并且绑定本地IP(不用无头的话需要在extension中开启webrtc)
# 开启 TCP 49100 端口(powershell运行,如果在cmd中运行需要在前面加上powershell -Command)
New-NetFirewallRule -DisplayName "IsaacSim_TCP_49100" -Direction Inbound -Action Allow -Protocol TCP -LocalPort 49100
![]()
# 开启 UDP 47998 端口(powershell运行,如果在cmd中运行需要在前面加上powershell -Command)
New-NetFirewallRule -DisplayName "IsaacSim_UDP_47998" -Direction Inbound -Action Allow -Protocol UDP -LocalPort 47998
![]()
进入isaac sim文件夹下面运行cmd:
\isaac-sim.streaming.bat --/app/livestream/publicEndpointAddress=xx.xxx.xxx.xxx --/app/livestream/port=49100
其中publicEndpointAddress是服务端的IP,可以通过ipconfig获得
b.启动带 WebRTC 扩展的 Isaac Sim
在客户端输入服务端的IP即可进入

服务端:
首先启动Isaac sim,可以通过isaac-sim.bat
3.1 公网连接
如果不在同一局域网,推荐使用 Tailscale 等内网穿透工具将两台电脑组建在同一虚拟局域网内。
操作差异:启动时的 publicEndpointAddress 参数需要绑定 Tailscale 分配的虚拟 IP(通常是 100.x.x.x)。
网络延迟排雷:如果能 Ping 通但画面卡顿、延迟极高或断连,大概率是流量走了 Tailscale 的 DERP 中继服务器。
验证方法:在客户端运行 tailscale ping 服务端虚拟IP。如果显示 pong from ... via x.x.x.x in 20ms 且带有 direct,说明是直连,网络极佳;若显示 via DERP 或 relay,说明由于公司防火墙限制,打洞失败。
解决办法:找网管在服务端路由器开放 UDP 41641 端口映射以实现直连;或者在两端电脑尝试调小 Tailscale 虚拟网卡的 MTU 值(如改为 1200),解决 UDP 碎片丢包问题。
4. 情况二:Linux (原生安装) ➜ Windows 客户端
对于服务端通过压缩包安装在 Ubuntu 系统的情况,逻辑与情况一完全一致,区别仅在于执行脚本换成了 .sh。
对于服务端在Linux上通过压缩包安装Isaac sim5.1,客户端windows系统的情况,依旧可以分为内网和外网连接,由于情况一里已经分过了这里就不细分了
由于时间原因这里先简单写一下步骤,Linux上的操作也是通过运行下面的命令,建议用无头模式
./isaac-sim.streaming.sh --/app/livestream/publicEndpointAddress=xx.xxx.xxx.xxx --/app/livestream/port=49100
5. 情况三:Linux (Docker 部署) ➜ Windows 客户端
对于在服务端在Linux上通过Docker安装Isaac sim5.1,客户端windows系统的情况
首先对于没有Docker的需要先安装Docker,再获取官网Isaac sim的镜像


docker中拉取命令(docker pull)就能直接自动下载相应架构的Isaac sim
进入容器:
docker run --name isaac-sim-5.1 --entrypoint bash -it --gpus all -e "ACCEPT_EULA=Y" --rm --network=host nvcr.io/nvidia/isaac-sim:5.1.0
进入docker后绑定IP(内网):
PUBLIC_IP=$(curl -s ifconfig.me) && ./isaac-sim.sh --exts omni.services.stream_client.webrtc --/app/livestream/publicEndpointAddress=$PUBLIC_IP --/app/livestream/port=49100
或者直接输入IP:
./runheadless.sh --/app/livestream/publicEndpointAddress=xxx.xxx.xxx.xxx --/app/livestream/port=49100
6.总结
记录了三种情况用webRTC远程与Isaac sim进行串流,操作很简单,需要注意的是绑定IP和开放UDP、TCP端口,然后对于外网需要设置虚拟IP让两台电脑在同一网段下,但是会存在延迟高、卡顿的情况,另外如果webrtc客户端没有画面重新进入即可。最难的本人觉得对于没有接触过Docker的小白来说相关的命令操作会感到疑惑。
***本文只做学习记录,感兴趣的可以相互交流,最后欢迎大家批评指正,共同进步!
参考文档:
1.Isaac sim文档直播客户端 — Isaac Sim 文档
https://docs.isaacsim.omniverse.nvidia.com/5.1.0/installation/manual_livestream_clients.html
2.nvidia ngc catalog:
GPU-optimized AI, Machine Learning, & HPC Software | NVIDIA NGC
https://catalog.ngc.nvidia.com/
更多推荐
所有评论(0)