littlebot
Published on 2025-04-15 / 0 Visits
0

【源码】基于DeepStream SDK和C++的目标检测消息传输系统

项目简介

本项目基于DeepStream SDK和C++语言开发,在deepstream - test1示例基础上拓展。展示了在管道中使用"nvmsgconv"和"nvmsgbroker"插件的方法,可创建NVDS_EVENT_MSG_META类型的元数据并附加到缓冲区,实现对车辆、人员等不同类型对象的消息处理,还支持将处理后的消息发送到Azure IoT Hub、Kafka、AMQP(RabbitMQ)和Redis等多种后端服务器。

项目的主要特性和功能

  1. 消息处理插件使用:借助"nvmsgconv"和"nvmsgbroker"插件,从缓冲区提取元数据,生成Json格式的"DeepStream Schema"有效负载并发送到后端服务器。
  2. 多类型对象支持:创建NVDS_EVENT_MSG_META类型元数据,处理车辆、人员等不同类型对象。
  3. 多后端消息传输:支持将消息发送到Azure IoT Hub、Kafka、AMQP(RabbitMQ)和Redis等多种后端服务器。
  4. 自定义元数据生成:用户可创建自定义对象,作为NVDS_EVENT_MSG_META元数据附加到缓冲区。
  5. 灵活的配置选项:可通过命令行参数或YAML文件,灵活配置管道属性、消息协议库、连接字符串、消息主题和消息模式等。

安装使用步骤

1. 环境准备

  • 按apps/sample_apps/deepstream - app/README说明安装DeepStream SDK及其先决条件。
  • 安装必要开发包: bash sudo apt-get install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev \ libgstrtspserver-1.0-dev libx11-dev
  • 若用nvinferserver进行推理,需在DeepStream - Triton Docker容器中运行示例,参考samples/configs/deepstream - app - triton/README下载容器镜像并设置模型仓库。

2. 编译项目

  • 根据平台在MakeFile中设置CUDA_VER:
    • Jetson平台:CUDA_VER = 11.4
    • x86平台:CUDA_VER = 11.8
  • 执行编译命令: bash sudo make (在Docker容器中运行时,不需要sudo)

3. 运行项目

方式一:使用命令行参数

bash ./deepstream - test4 - app - i <H264 filename> - p <Proto adaptor library> --conn - str=<Connection string> --topic=<topicname> - s <0/1>

方式二:使用YAML文件

bash ./deepstream - test4 - app <yml file> 例如: bash ./deepstream - test4 - app dstest4_config.yml 注意:运行应用程序前,需在dstest4_config.yml中相应更新msgbroker属性、"proto - lib"、"conn - str"和"topic"。

4. Azure Iotedge运行时集成(可选)

  • 参考DS_PACKAGE_DIR/sources/libs/azure_protocol_adaptor/module_client/README进行以下操作:

    1. 创建Azure IoT Hub
    2. 从Azure门户注册新的Azure IoT Edge设备
    3. 在机器上设置和安装Azure IoT Edge
    4. 安装依赖项
    5. 指定连接字符串
    6. 使用配置文件(可选)
    7. 安装并设置nvidia - docker
    8. 部署IoT Edge模块
    9. 启动Edge运行时
  • 启动Edge运行时并验证模块是否运行: bash sudo systemctl restart iotedge systemctl status iotedge sudo iotedge list sudo iotedge logs ds

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】