DeepStream 是 NVIDIA 面向视频分析、AI 推理和多路流处理的 SDK。传统上,DeepStream 主要运行在 Linux 环境中。对于 Windows 用户,推荐方式不是直接在 Windows 原生环境安装 DeepStream,而是通过 WSL2 + Docker + NVIDIA GPU 来运行 DeepStream 容器。

        NVIDIA 官方文档也提供了 DeepStream on WSL 的说明,可参考:DeepStream On WSL

1. 适用场景

        如果你是 Windows 用户,但希望使用 DeepStream 进行以下开发:

  • 视频解码、编码测试
  • 多路视频流推理
  • deepstream-app 示例验证
  • DeepStream 插件或应用开发
  • Docker 化部署验证

        那么 WSL2 是目前比较推荐的方式。

        需要注意的是,DeepStream 在 WSL2 中主要依赖 Docker 容器运行,不建议尝试在 Windows 原生环境直接安装 DeepStream SDK。

2. 前置条件

        推荐环境如下:

  • Windows 11
  • 支持 WSL2 的 NVIDIA GPU
  • GeForce 或 Quadro GPU
  • GPU 驱动
  • 最新稳定版 WSL2
  • Ubuntu 24.04 WSL 发行版
  • Docker Engine
  • NVIDIA Container Toolkit
  • DeepStream 9.0 Docker 镜像

        注意:Tesla / Datacenter GPU 在 WSL 场景下不受支持。WSL 中也不要安装 Linux NVIDIA 显示驱动,只需要在 Windows 侧安装 NVIDIA 驱动。

        可以先在 WSL 中验证 GPU 是否可见:

nvidia-smi

        如果这里不能正常显示 GPU 信息,需要先修复 Windows NVIDIA 驱动或 WSL GPU 支持问题。

3. 安装 Ubuntu 24.04 WSL

        在 Windows Terminal 中以管理员权限运行:

wsl --list --online

wsl --install Ubuntu-24.04

安装完成后进入 Ubuntu:

wsl -d Ubuntu-24.04

        首次进入时会要求创建 Linux 用户名和密码。

4. 安装 Docker Engine

        进入 Ubuntu WSL 后,安装 Docker 依赖:

sudo apt-get update

sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common

添加 Docker 源并安装 Docker:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \

"deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

sudo apt-get update

sudo apt-get install -y docker-ce docker-ce-cli containerd.io --fix-missing

验证 Docker:

sudo docker run hello-world

如果 Docker 服务没有启动,可以手动启动:

sudo dockerd &

5. 安装 NVIDIA Container Toolkit

        安装 NVIDIA Container Toolkit:

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \

sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \

sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \

sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

sudo apt-get update

sudo apt-get install -y nvidia-container-toolkit

重启 Docker:

sudo systemctl restart docker

如果 WSL 中没有 systemd,也可以重新启动 Docker daemon 或重启 WSL。

6. 拉取 DeepStream 9.0 镜像

sudo docker pull nvcr.io/nvidia/deepstream:9.0-triton-multiarch

启动容器:

sudo docker run -it --privileged --rm --name=deepstream-wsl \

--net=host \

--gpus all \

-e DISPLAY=$DISPLAY \

-e CUDA_CACHE_DISABLE=0 \

-e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics \

--device /dev/snd \

-v /tmp/.X11-unix/:/tmp/.X11-unix \

nvcr.io/nvidia/deepstream:9.0-triton-multiarch

进入容器后,可以检查 DeepStream 版本:

deepstream-app --version-all

7. 验证解码和编码能力

        进入 DeepStream 示例流目录:

cd /opt/nvidia/deepstream/deepstream/samples/streams

运行一个简单的解码 + 编码测试:

gst-launch-1.0 filesrc location=sample_720p.mp4 ! qtdemux ! h264parse ! \

nvv4l2decoder ! nvv4l2h264enc ! h264parse ! qtmux ! \

filesink location=filedump.mp4 -v

如果运行成功,会生成:

filedump.mp4

        可以把文件拷贝出来播放验证。

8. 验证 deepstream-app

        进入配置目录:

cd /opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app

        官方文档建议在 Ubuntu 24.04 Docker 环境下避免依赖 nveglglessink 渲染,因为存在已知显示问题。更稳妥的方式是使用文件输出 sink。

例如修改:

source30_1080p_dec_infer-resnet_tiled_display.txt

        关闭显示 sink,启用文件输出 sink,然后运行:

deepstream-app -c source30_1080p_dec_infer-resnet_tiled_display.txt

        成功后会生成输出视频文件,例如:

out.mp4

9. 常见问题

nvidia-smi 不工作

        优先检查 Windows 侧 NVIDIA 驱动,而不是在 WSL 里安装 Linux 驱动。

Docker 无法访问 GPU

        确认容器启动时带了:

--gpus all

并且安装了 NVIDIA Container Toolkit。

显示窗口无法弹出

        在 WSL + Ubuntu 24.04 Docker 环境中,nveglglessink 这类显示 sink 可能有问题。建议先使用 filesink 输出文件验证功能。

Tesla GPU 是否支持

        根据官方说明,WSL 场景下不支持 Tesla / Datacenter GPU,推荐使用 GeForce 或 Quadro。

启动docker报错

"ERROR: The NVIDIA Driver is present, but CUDA failed to initialize, NVIDIA-SMI couldn't find libnvidia-ml.so library in your system. Please make sure that the NVIDIA Display Driver is properly installed and present in your system."

根因是:DeepStream 8.0 镜像默认启动时的环境/入口脚本导致 CUDA 驱动库解析顺序不对,在 WSL2 里没有正确优先加载 NVIDIA Container Runtime 挂进去的驱动库。

你的宿主环境本身没问题,因为这个测试已经成功:

nvidia/cuda:12.8.0-devel-ubuntu24.04 -> CUDA devices: 1

但 DeepStream 默认启动会报:

The NVIDIA Driver is present, but CUDA failed to initialize

Failed to detect NVIDIA driver version

而你加了下面这些参数后能工作:

--entrypoint /bin/bash

-e NVIDIA_DRIVER_CAPABILITIES=all

-e LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/usr/lib/wsl/lib:/usr/local/cuda/lib64

说明 NVIDIA 驱动库其实已经可以被容器使用,只是 DeepStream 镜像默认的启动环境没有正确找到它们。

在 WSL2 中,Linux 侧并不是安装真正的 NVIDIA Linux 内核驱动,而是通过 Windows NVIDIA 驱动暴露出来的接口,关键库通常在:

/usr/lib/wsl/lib

DeepStream 镜像内部又自带 CUDA、TensorRT、Triton、多媒体相关库。默认入口脚本可能把镜像内的 CUDA compatibility/stub 库路径放在更前面,或者没有正确包含 NVIDIA runtime 注入的路径,导致程序加载到了不适合 WSL2 的 libcuda.so / libnvidia-ml.so。于是它能“看到 NVIDIA driver 存在”,但 CUDA 初始化失败。

简短结论:

不是 Docker GPU 没配置好,也不是 WSL2 CUDA 不可用,而是 DeepStream 镜像默认 entrypoint / LD_LIBRARY_PATH 在 WSL2 下解析 NVIDIA 驱动库有问题。

实际 workaround 就是继续用你验证通过的启动方式:

--entrypoint /bin/bash

-e NVIDIA_DRIVER_CAPABILITIES=all

-e LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/usr/lib/wsl/lib:/usr/local/cuda/lib64

然后进入容器后手动运行 DeepStream 相关命令。

改用如下命令:

sudo docker run -it --rm \
  --name=deepstream \
  --net=host \
  --gpus all \
  --entrypoint /bin/bash \
  -e DISPLAY=$DISPLAY \
  -e CUDA_CACHE_DISABLE=0 \
  -e NVIDIA_VISIBLE_DEVICES=all \
  -e NVIDIA_DRIVER_CAPABILITIES=all \
  -e LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64:/usr/lib/wsl/lib:/usr/local/cuda/lib64 \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  nvcr.io/nvidia/deepstream:8.0-triton-multiarch

总结

        在 Windows 上使用 DeepStream,推荐路径是:

Windows 11

-> WSL2 Ubuntu 24.04

-> Docker Engine

-> NVIDIA Container Toolkit

-> DeepStream 9.0 Docker Container

        这种方式可以在 Windows 开发机上获得接近 Linux 的 DeepStream 开发体验,适合做功能验证、样例运行、插件开发和容器化测试。对于需要图形显示的场景,建议优先使用文件输出方式验证 pipeline,避免受 WSL 图形栈限制影响。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐