DeepStream9.0 在 Windows 上使用
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 图形栈限制影响。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)