AidStream SDK 使用指南
简介
AidStream SDK 是一个流媒体数据处理工具包,适用于构建基于 AI 的视频分析应用和服务,并能充分利用硬件加速技术 (如:GPU, VPU, NPU) 实现端到端应用加速。其目标是为开发者提供针对具体预定义流数据处理 (streaming-processing) 的简单接口封装,消除底层技术 (如:硬件加速技术) 的复杂性。
AidStream 基于管道 (pipeline) 的概念,开发者可通过创建预定义的流数据处理 pipeline,将自定义处理任务 (如:AI 模型推理) 及其它内建的任务 (如:视频编解码,视频推拉流,视频流存储,等) 进行组合,实现完整的数据处理链。
在一条完整的 pipeline 中,数据从 输入流 进入,开发者可以通过 AidStream 的 API 获取对应的 RGB 数据,并在处理后输入到 输出流 中。例如,可以在输入端和输出端之间通过插入自定义回调函数获取 RGB 数据及其它数据,在回调函数中完成数据预处理、AI 分析及后处理后,再返回至 pipeline,继续 pipeline 的后续输出过程。
AidStream 工作流如下图所示:

支持情况
输入流 和 输出流 可支持的数据类型不同,当 输入流 与 输出流 的组合在 AidStream 的支持范围内时,才可成功构建 pipeline。目前支持的 输入流 与 输出流 的组合如下表所示:
| 输入 / 输出 | RTSP (H.264) | RTSP (H.265) | File | Screen |
|---|---|---|---|---|
| RTSP (H.264) | ✅ | ❌ | ✅ | ❌ |
| RTSP (H.265) | ✅ | ✅ | ✅ | ❌ |
| File | ✅ | ❌ | ✅ | ✅ |
| MIPI Camera | ✅ | ❌ | ✅ | ✅ |
| USB Camera | ✅ | ❌ | ✅ | ✅ |
- RTSP (H.264): H.264编码编码的 RTSP 流
- RTSP (H.265): H.265编码编码的 RTSP 流
- File:本地的视频文件
- MIPI Camera:MIPI 相机
- USB Camera: USB 相机
- Screen:设备的显示器
支持平台
| 平台 | 运行方式 |
|---|---|
| IQ9075 | Ubuntu 24.04 |
准备工作
IQ9075 硬件
Ubuntu 24.04 系统
系统依赖配置
配置 AidLux 依赖源
# 下载正确的公钥
sudo wget -O- https://archive.aidlux.com/ubuntu24/public.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/private-aidlux.gpg > /dev/null
# 编辑源文件
sudo vim /etc/apt/sources.list.d/private-aidlux.list
#在源文件中填入AidLux 提供的私钥
deb [arch=arm64 signed-by=/etc/apt/trusted.gpg.d/private-aidlux.gpg] https://archive.aidlux.com/ubuntu24 noble main
# 更新缓存
sudo apt update更新完成后,可以通过如下命令获取到AidLux 官方的SDK 依赖
sudo apt list | grep aid | grep unknown# 安装软件
# 必须先安装的,系统不自带
sudo apt install python3 python3-pip libopencv-dev python3-opencv net-tools
# 安装 aidlite 之前必须安装的
sudo apt install aidlux-aistack-base aidrtcm
# 安装 aidlite 及依赖
sudo apt install aid-lms aidlms-sdk aidlite-sdk cmake
sudo apt-get install libfmt-dev nlohmann-json3-dev
sudo apt install aidlite-*
# 支持DSP
sudo apt-get install qcom-fastrpc1
sudo apt-get install qcom-fastrpc-dev
# 安装 aidgen-sdk
sudo apt install aidgen-sdk
# 安装 mms 服务
sudo apt install aid-mms
# 支持 GPU
sudo apt-add-repository -s ppa:ubuntu-qcom-iot/qcom-ppa
sudo apt install qcom-adreno-cl1
sudo ln -s /usr/lib/aarch64-linux-gnu/libOpenCL.so.1 /usr/lib/aarch64-linux-gnu/libOpenCL.so安装完成后检查系统 /usr/local/share 新增 aidlite 和 aidgen 目录

设备授权
获取设备 SN 码
cat /sys/devices/soc0/serial_number获取授权文件
提供SN号给阿加犀技术人员,生成设备指定 License 文件,放入路径 /etc/opt/aidlux/license/AidLuxLics 下
激活授权
sudo /opt/aidlux/cpf/aid-lms/manager.sh restart开发示例
第一步:部署 aidstream-gst
sudo apt-add-repository -s ppa:ubuntu-qcom-iot/qcom-ppa
sudo apt update
sudo apt install weston-autostart
sudo apt install gstreamer1.0-qcom-sample-apps
sudo reboot
sudo apt-get install libgstreamer1.0-dev gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-alsa gstreamer1.0-gtk3
sudo apt-get install -y libjsoncpp-dev
sudo ln -s /usr/lib/aarch64-linux-gnu/libjsoncpp.so /usr/lib/aarch64-linux-gnu/libjsoncpp.so.1
sudo apt install gstreamer1.0-rtsp
sudo apt install aidstream-gst示例程序位于 /usr/local/share/aidstream-gst/example/cxx/
第二步:编辑流配置文件
流配置文件 aidstream-gst.conf 位于 /usr/local/share/aidstream-gst/conf/ 下。关于配置文件说明可以参考 流配置文件说明
第三步:编译示例代码
- 编译
cmake -DV4L2=2404-9075 ..
make第四步:运行 Demo
编译链接成功后会得到4个可执行程序: demo qnn_rtsp rtsp start
# 快速启动流
start {stream id}
# 快速启动自带算法的流
# 模型位于:/usr/local/share/aidstream-gst/example/datas/
qnn_rtsp {stream id}
# 快速启动多线程的推拉流(当前示例设置为2个线程)
rtsp流配置文件
当使用接口 int start_stream(string stream_id, GetImageCB &cb) 的时候,可根据配置文件 /usr/local/share/aidstream-gst/conf/aidstream-gst.conf 来配置输入输出流。 具体要求如下:
- 配置文件为json格式。
- 标注为必选参数,则必须配置。
- 参数大小写敏感。
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| streamsId | string | 是 | stream id,唯一标识一组流配置 |
| inputType | string | 是 | 输入流的协议类型。支持的类型有:rtsp / rtmp / file, 输入不支持的类型及无效地址则返回失败。 |
| inputAddr | string | 是 | 输入流的地址。 |
| outputType | string | 是 | 输出流的协议类型。支持的类型有:rtsp / wayland / empty。输入不支持的类型一律设置为空,即输出流到fakesink。 |
| outputAddr | string | 是 | 输出流的地址。 |
| decodeType | string | 否 | 硬解码格式。支持的类型有: H264 / H265 |
| encodeType | string | 否 | 硬编码格式。支持的类型有: H264 / H265 |
配置文件参考内容:
💡注意
输入流 & 输出流地址根据开发者需求自定义,参考内容中仅做示例
{
"streams": [
{
"streamsId": "1",
"properties": {
"inputType": "rtsp",
"inputAddr": "rtsp://admin:aidlux123@192.168.110.234:554/h264/ch1/main/av_stream",
"outputType": "rtsp",
"outputAddr": "rtsp://192.168.111.115:8554/aidstream-gst-rtsp-test-1",
"decodeType": "H264",
"encodeType": "H264"
}
},
{
"streamsId": "2",
"properties": {
"inputType": "file",
"inputAddr": "./test_kobe.mp4",
"outputType": "rtsp",
"outputAddr": "rtsp://192.168.111.115:8554/aidstream-gst-rtsp-test-2",
"decodeType": "H264",
"encodeType": "H264"
}
},
{
"streamsId": "3",
"properties": {
"inputType": "rtmp",
"inputAddr": "rtmp://192.168.111.115:1935/live/stream",
"outputType": "rtsp",
"outputAddr": "rtsp://192.168.111.115:8554/aidstream-gst-rtmp-test-3",
"decodeType": "H264",
"encodeType": "H264"
}
},
{
"streamsId": "4",
"properties": {
"inputType": "file",
"inputAddr": "./test_kobe.mp4",
"outputType": "wayland",
"outputAddr": "",
"decodeType": "H264",
"encodeType": "H264"
}
},
{
"streamsId": "5",
"properties": {
"inputType": "rtsp",
"inputAddr": "rtsp://admin:aidlux123@192.168.110.234:554/h264/ch1/main/av_stream",
"outputType": "rtsp",
"outputAddr": "rtsp://192.168.111.115:8554/aidstream-gst-rtsp-test-5",
"decodeType": "H265",
"encodeType": "H265"
}
}
]
}