# deepstream-sample **Repository Path**: klose28/deepstream-sample ## Basic Information - **Project Name**: deepstream-sample - **Description**: NVIDIA Deepstream 示例代码 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-05-13 - **Last Updated**: 2026-05-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DeepStream 使用说明 ## DeepStream Installation ### 容器运行 1. 拉取 deepstream 容器 ```bash docker pull nvcr.io/nvidia/deepstream:7.1-triton-multiarch ``` x86 下的此容器存在一些问题,如找不到 libde265.so.0、libx265.so.199 等库文件,需要重新安装 ```bash apt update && apt reinstall -y --no-install-recommends libde265-0 libx265-199 \ libavutil56 libavcodec58 libx264-163 libvpx7 libmp3lame0 libxvidcore4 libmpg123-0 ``` 2. 创建容器命令 ```bash docker run -itd --net=host --gpus all -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix \ -v /mnt/personal:/workspace --name triton-multiarch nvcr.io/nvidia/deepstream:7.1-triton-multiarch ``` 3. 依赖库安装 ```bash apt install -y libboost-filesystem-dev # 安装 spdlog wget --content-disposition https://codeload.github.com/gabime/spdlog/tar.gz/refs/tags/v1.15.3 sh -c 'tar -zxf spdlog-1.15.3.tar.gz && cmake -S spdlog-1.15.3 -B spdlog_build "-DBUILD_SHARED_LIBS=ON" \ && make -C spdlog_build -j$(nproc) install/strip && rm -rf spdlog-1.15.3 spdlog_build' # 安装 yaml-cpp wget --content-disposition https://codeload.github.com/jbeder/yaml-cpp/tar.gz/refs/tags/0.8.0 sh -c 'tar -zxf yaml-cpp-0.8.0.tar.gz && cmake -S yaml-cpp-0.8.0 -B yaml-cpp_build "-DBUILD_SHARED_LIBS=ON" \ && make -C yaml-cpp_build -j$(nproc) install/strip && rm -rf yaml-cpp-0.8.0 yaml-cpp_build' ``` x86 下直接安装 ubuntu 源带的 OpenCV ```bash apt install -y libopencv-dev ``` arm 不要装 ubuntu 源自带的 OpenCV ```bash apt install -y nvidia-opencv ``` ### 本地安装 1. deepstream 基于 gstreamer 框架进行集成,首先需要装 gstreamer 相关软件 ```bash apt install -y libgstreamer1.0-dev \ libgstreamer-plugins-base1.0-dev \ gstreamer1.0-tools \ gstreamer1.0-plugins-base \ gstreamer1.0-plugins-good \ gstreamer1.0-plugins-ugly \ gstreamer1.0-plugins-bad \ libgstrtspserver-1.0-dev \ gstreamer1.0-libav ``` 2. 设置软件源(需要根据 Jetson 版本进行选择对应的版本源),一般 orin 设备中已配置对应的软件源, 可到 `/etc/apt/sources.list.d/nvidia-l4t-apt-source.list` 进行查看。此软件源包含了 deepstream 以及其他一些相关依赖。 ```bash echo -e "deb https://repo.download.nvidia.com/jetson/common r36.4 main deb https://repo.download.nvidia.com/jetson/t234 r36.4 main deb https://repo.download.nvidia.com/jetson/ffmpeg r36.4 main "| sudo tee /etc/apt/sources.list.d/nvidia-l4t-apt-source.list ``` 3. 安装 tensorrt 安装前可使用 `apt-cache madison libnvinfer-dev` 命令查看当前所有源包含的软件版本信息 ```bash apt install libnvinfer10=10.3.0.30+cuda12.5 \ libnvinfer-dev=10.3.0.30+cuda12.5 \ libnvinfer-plugin-dev=10.3.0.30+cuda12.5 \ libnvinfer-plugin10=10.3.0.30+cuda12.5 \ libnvparsers10=10.3.0.30+cuda12.5 \ libnvparsers-dev=10.3.0.30+cuda12.5 \ libnvonnxparsers-dev=10.3.0.30+cuda12.5 \ libnvonnxparsers10=10.3.0.30+cuda12.5 ``` 4. 安装 deepstream ```bash apt install deepstream-7.1 ``` ## gst-launch 命令使用 ```bash gst-launch-1.0 -v rtspsrc location="rtsp://192.168.1.100:554/cam/realmonitor?channel=1&subtype=0" protocols=tcp ! rtph264depay ! h264parse ! nvv4l2decoder ! fpsdisplaysink video-sink=fakesink text-overlay=false sync=false ``` ## 模型 int8 量化 1. 下载 Deepstream-Yolo 源码 ```bash git clone https://github.com/marcoslucianops/DeepStream-Yolo.git ``` 2. 设置环境变量 ```bash # 根据自己的 cuda 版本进行对应修改 export CUDA_VER=12.6 export OPENCV=1 ``` 3. 编译 Deepstream-YOLO ```bash # 清理命令 make -C nvdsinfer_custom_impl_Yolo clean # 编译命令 make -C nvdsinfer_custom_impl_Yolo ``` 4. 在项目目录下创建 calibration 目录,准备一些数据集图片拷贝到此文件夹下,之后执行如下命令: ```bash realpath calibration/*.jpg > calibration.txt ``` 5. 设置如下环境变量 ```bash export INT8_CALIB_IMG_PATH=calibration.txt # 根据需要进行设置 export INT8_CALIB_BATCH_SIZE=4 ``` 6. 修改配置文件 修改 config_infer_primary_yolo5.txt 文件 ```yaml # 修改为自己模型的文件名称 onnx-file=yolov5.onnx # 修改检测类别数量 num-detected-classes=10 # 要生成的 engine 文件名称 model-engine-file=model_b1_gpu0_int8.engine # 取消此行注释 int8-calib-file=calib.table # engine 文件类型(INT8) network-mode=1 ``` 7. 进行模型量化 将准备好的模型文件及对应的 labels.txt 文件放置到主目录,执行如下命令进行量化 ```bash deepstream-app -c deepstream_app_config.txt ``` 执行完成后等待完成即可 ## 其他相关说明 1. 开启 gst 日志功能 ```bash # 右值为日志级别,范围为 0-9,当为 0 时,无日志输出 export GST_DEBUG=6 ``` 2. NvDsFrameLatencyInfo 数据获取 在代码中的 `nvds_enable_latency_measurement` 变量,本质是读取的系统环境变量进行判断。要获取到 NvDsFrameLatencyInfo 数据,需要设置以下环境变量,否则获取到的数据是空的。 ```bash export NVDS_ENABLE_LATENCY_MEASUREMENT=1 export NVDS_ENABLE_COMPONENT_LATENCY_MEASUREMENT=1 ``` 3. 图形界面问题处理 当在容器内启动 deepstream 程序时,如果无法进行显示的映射,可执行以下命令 ```bash # 清除 DISPLAY 环境变量 unset DISPLAY ```