Skip to content

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)FileScreen
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:设备的显示器

快速开始

安装

bash
# 阿加犀提供的 AidLux OS 开发板:AidStream SDK 已预装在 Linux 系统环境中
bash
# 阿加犀提供的 Linux Container 开发板:AidStream SDK 已预装于容器镜像中

接口文档

开发示例

示例程序位于 /usr/local/share/aidstream-gst/example/cxx/

第一步:编辑流配置文件

流配置文件 aidstream-gst.conf 位于 /usr/local/share/aidstream-gst/conf/ 下。关于配置文件说明可以参考 流配置文件说明

第二步:编译示例代码

  • 引入头文件及链接库
bash
# 引入头文件

#include "aidstream.h"

# 链接指定 AidStream so 库

$g++ example.cpp -o demo -L/usr/local/lib/ -laidstream-gst -lopencv_core -I/usr/local/include/aidlux/aidstream-gst/ -I/usr/local/lib/aidlux_opencv/include/opencv4/

AidStream SDK 头文件地址: /usr/local/include/aidlux/aidstream-gst/aidstream.h

AidStream SDK 库文件地址: /usr/local/lib/libaidstream-gst.so
  • 编译
bash
cmake ..
make
bash
cmake -DV4L2=ON ..
make

第三步:运行 Demo

编译链接成功后会得到4个可执行程序: demo qnn_rtsp rtsp start

bash
# 快速启动流

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格式。
  • 标注为必选参数,则必须配置。
  • 参数大小写敏感。
参数名类型必填说明
streamsIdstringstream id,唯一标识一组流配置
inputTypestring输入流的协议类型。支持的类型有:rtsp / rtmp / file, 输入不支持的类型及无效地址则返回失败。
inputAddrstring输入流的地址。
outputTypestring输出流的协议类型。支持的类型有:rtsp / wayland / empty。输入不支持的类型一律设置为空,即输出流到fakesink。
outputAddrstring输出流的地址。
decodeTypestring硬解码格式。支持的类型有: H264 / H265
encodeTypestring硬编码格式。支持的类型有: H264 / H265

配置文件参考内容:

💡注意

输入流 & 输出流地址根据开发者需求自定义,参考内容中仅做示例

json
{
"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"
            }                   
    }
]
}