Skip to main content
Qualcomm® IoT 平台上的 Ubuntu 提供了多种示例应用程序。每个应用程序都适用于不同的使用场景,例如零售、Qualcomm ® Edge AI Box 解决方案以及 IP 摄像头。这些示例应用程序可分为以下几类:
  • 多媒体示例应用程序,用于展示摄像头、视频和音频功能。
  • AI 示例应用程序,用于展示 AI 和机器学习 (ML) 能力。

前提条件

要使用摄像头,请在目标设备上运行以下命令启用 camx:

运行多媒体示例应用程序

多媒体示例应用程序展示了 Dragonwing EVK 上摄像头、显示和视频流的使用场景。

多摄像头流传输或编码(行车记录仪)

说明: gst-multi-camera-example 应用程序允许您同时从两个摄像头传感器进行流传输。该应用程序将摄像头画面并排合成后在屏幕上显示,或对视频流进行编码并保存到文件中。 需要多个摄像头输入的场景包括行车记录仪或立体摄像头。您可以将此应用程序作为参考,并构建自己的用例。例如,一个安防系统,其目标是从多个摄像头捕获视频。您可以查看它,或将其归档以供将来查阅。 下图展示了多个摄像头流的管道。有关此管道中所用元素的更多信息,请参阅管道流程。 多摄像头管道 图:gst-multi-camera-stream-example 管道 应用程序: gst-multi-camera-example

运行应用程序

注意: 在以下命令中,请提供必要的参数,例如宽度、高度和输出类型。宽度和高度的更改仅适用于主摄像头。
1

完成前提条件

确保您已完成前提条件。
2

在目标设备的终端中,选择以下任一用例并运行相应的命令:

Waylandsink 用例: 查看 Waylandsink 输出:
编码器用例: 查看编码器输出:
3

停止正在运行的用例

按 Ctrl + C。
4

在目标设备的终端中,运行以下命令以显示可用的帮助选项:

预期输出

输出会显示在屏幕上并保存到文件中。
  • 如果输出类型为显示,则可以在显示屏上预览视频流。
  • 如果输出类型为视频编码,则编码后的文件将分别保存至 /etc/media/cam1_vid.mp4(摄像头 1)和 /etc/media/cam2_vid.mp4(摄像头 2)。
摄像头预览输出图:gst-multi-camera-example 应用程序的预期输出——预览

管道流程

下表列出了多摄像头流传输管道中使用的插件:
管道说明
在显示屏上预览
  1. qticamsrc 从 camera0 和 camera1 捕获视频。
  2. 应用 Capsfilter 对原始视频数据强制施加约束。
  3. qtivcomposer 合成视频流,并将合成后的视频数据发送到 Wayland 显示接收器。
  4. waylandsink 显示实时预览。
在设备上进行编码器转储
  1. qticamsrc 从 camera0 和 camera1 捕获视频。
  2. 应用 Capsfilter 对原始视频数据强制施加约束。
  3. v4l2h264enc 用于将视频编码为 H.264 格式。
  4. H264parse 用于解析视频。
  5. Mp4mux 用于将视频多路复用为 MP4 容器。
  6. Filesink 用于将视频写入文件。

多通道视频解码与合成(视频墙)

说明: gst-concurrent-videoplay-composition 应用程序支持并发播放 MP4 AVC (H.264) 视频,并在视频墙显示屏上进行合成。 在并发视频播放和合成管道中,四条解码与合成管道并发运行。有关此管道中所用插件的更多信息,请参阅管道流程。 单摄像头管道 图:具有四个流的 gst-concurrent-videoplay-composition 管道 应用程序: gst-concurrent-videoplay-composition

运行应用程序

下表列出了通过 gst-concurrent-videoplay-composition 应用程序支持的用例:
用例说明
视频会议
  • 同时解码多位参与者的视频流。
  • 适用于多方视频会议场景,应用程序需要管理多路视频流。
监控系统
  • 并发解码来自两个独立摄像头的视频源。
数字标牌
  • 允许对集中管理的信息同时进行更改或更新,并在多个位置以电子方式显示。
要运行这些用例,请执行以下操作:
1

完成前提条件

确保您已完成前提条件。
2

准备输入视频文件

在目标设备上添加至少一个 MP4 AVC (H.264) 视频文件。
3

运行用例

在目标设备的终端中,运行:
命令行参数示例
  • 并发播放两个会话
  • 并发播放四个会话
4

停止正在运行的用例

按 Ctrl + C。
5

在目标设备的终端中,运行以下命令以显示可用的帮助选项:

预期输出

各个合成流被拼接在一起,作为统一的视频流显示。视频墙输出图:gst-concurrent-videoplay-composition 应用程序的预期输出

管道流程

下表列出了运行视频墙管道所使用的插件:
插件说明
filesrc
    读取视频数据。
qtdemux
    对视频数据进行解多路复用。
h264parse
    解析 H.264 视频流。
v4l2h264dec
    解码 H.264 视频流。
qtivcomposer
    合成已解码的视频流,并通过显示屏输出。
waylandsink
    在 Wayland 显示屏上显示合成后的视频流。

运行 AI 示例应用程序

AI 示例应用程序展示了在 Dragonwing EVK 上,对来自摄像头、视频文件或实时流传输协议 (RTSP) 流的输入进行对象检测、多路推理以及并行推理的使用场景。

下载并传输 AI 模型和标签

要运行 AI 示例应用程序,请使用以下任一方法下载所需的模型和标签:
  • 从 Qualcomm® AI Hub 下载 AI 模型,并从 GitHub 下载标签
  • 使用 download_artifacts.sh 脚本下载 AI 模型和标签 在目标设备上,获取 download_artifacts.sh 脚本,设置可执行权限,并运行它以下载模型、媒体和标签文件:
要运行对象检测、并行推理和多路推理 AI 用例,应用程序会使用以下 AI 模型:

AI 对象检测

说明: gst-ai-object-detection 应用程序允许您在图像和视频中检测对象。这些用例展示了在 Qualcomm AI 硬件加速器上运行 YOLOv5、YOLOv8 和 YOLOX。 下图展示了管道,它从实时摄像头画面、文件、USB 源或 RTSP 流接收输入,进行预处理,然后在 AI 硬件上运行推理。结果既可以显示在屏幕上,也可以保存为编码的 MP4 文件,或通过 RTSP 服务器进行流传输。有关管道流程中使用的插件信息,请参阅管道流程 管道图 应用程序: gst-ai-object-detection

输入和输出能力

示例模型和标签文件

在目标设备上运行应用程序

1

下载构件

确保您已将所有所需的构件下载到目标设备。
2

运行应用程序

示例应用程序使用 /etc/configs/config_detection.json 文件读取输入参数。要显示所有可用选项:
要停止用例,请按 CTRL + C。

配置

gst-ai-object-detection 应用程序使用 /etc/configs/config_detection.json 文件。更新其属性以匹配您的模型、输入流和输出。有关所有字段,请参阅Config JSON 字段说明。
对于 USB 摄像头输入,请在配置文件中设置 video-format、resolution 和 framerate 参数, 以匹配摄像头的能力,请参阅配置 USB 摄像头。
snpe-tensors 字段仅适用于 SNPE 运行时。要获取 DLC 模型的输出张量名称,请在 Netron 中打开该模型。
使用来自 AI Hub 的 DLC 模型时,snpe-tensors 字段是可选的。
摄像头源、LiteRT 模型、DSP 运行时

预期输出

检测到的对象及其边界框和标签会叠加在视频上,并显示在本地显示屏上。输出图

管道流程

下表列出了对象检测管道中使用的插件:

Config JSON 字段说明

并行 AI 推理

说明:gst-ai-parallel-inference 应用程序允许您对来自不同源(例如摄像头、文件或 RTSP 网络)的输入流执行对象检测、对象分类、姿势检测和图像分割。这些用例分别为对象检测、图像分割、分类和姿势检测实现了 LiteRT 模型。 下图展示了管道,它从摄像头、文件或 RTSP 流接收输入流,为这四个用例执行并行推理,并将结果并排显示在屏幕上。 有关此管道中所用插件的信息,请参阅管道流程。 管道图 应用程序: gst-ai-parallel-inference

输入和输出能力

示例模型和标签文件

在目标设备上运行应用程序

1

下载构件

确保您已将所有所需的构件下载到目标设备。
2

运行应用程序

示例应用程序使用 /etc/configs/config-parallel-inference.json 文件读取输入参数。要显示所有可用选项:
要停止用例,请按 CTRL + C。

配置

gst-ai-parallel-inference 应用程序使用 /etc/configs/config-parallel-inference.json 文件。更新其属性以匹配您的模型、输入流和输出。有关所有字段,请参阅Config JSON 字段说明。
对于 QCS6490,如果配置文件中不存在 file-path 和 rtsp-ip-port,则将选择摄像头输入。
文件源、LiteRT 模型、DSP 运行时

预期输出

在执行四路并行推理后,结果将并排显示在屏幕上。管道图

管道流程

下表列出了元数据解析器管道中使用的插件:

Config JSON 字段说明

多路推理

说明:gst-ai-multistream-inference 应用程序展示了对来自摄像头、文件或 RTSP 流的最多 32 路输入流进行 AI 推理(对象检测和分类)。 下图展示了管道,它接收多路输入流,对它们进行预处理,运行 AI 推理,合成这些流,并将它们合并为单一视频输出。 在 1080P 和 720P 上验证的每种 SoC 支持的最大输入流数量如下:
  • QCS6490 – 8
  • Dragonwing IQ-8275 – 16
  • Dragonwing IQ-9075 – 32 输出可以显示在 HDMI 显示屏上,保存为 H.264 编码的 MP4 文件,或转换为 RTSP 流。
有关此管道中所用插件的信息,请参阅管道流程。 管道图 应用程序: gst-ai-multistream-inference

输入和输出能力

示例模型和标签文件

在目标设备上运行应用程序

1

下载构件

确保您已完成前提条件。这将下载所有所需的构件到目标设备。
2

运行应用程序

示例应用程序使用 /etc/configs/config-multistream-inference.json 文件读取输入参数。要显示所有可用选项:
要停止用例,请按 CTRL + C。

配置

gst-ai-multistream-inference 应用程序使用 /etc/configs/config-multistream-inference.json 文件。更新其属性以匹配您的模型、输入流和输出。有关所有字段,请参阅Config JSON 字段说明。
如果观察到性能下降,您可以使用 YOLOv8 LiteRT 模型。有关 YOLOv8 导出说明,请参阅前提条件。
对 8 路 H.264 文件输入进行对象检测、LiteRT 模型、DSP 运行时

预期输出

管道图

管道流程

下表列出了元数据解析器管道中使用的插件:

Config JSON 字段说明

参考文档

要进一步探索示例应用程序,