Skip to content

AidStream

简介

AidStream 是用来构建流媒体应用的视频框架,其目标是要简化视频+AI应用程序的开发中需要插入算法的程序构建。 AidStream 基于pipeline的概念,aidstream中的pipeline元素也非常简单,只分为输入端和输出端,使用函数调用即可,且在pipeline开始后时,sdk可以在输入端和输出端之间通过回调函数获取RGB数据,在回调函数中可以将此RGB数据经算法处理后再返回给pipeline,经处理后的RGB数据会继续pipeline的后续输出过程。 V3版本是对之前AidStream初始版本的一次重大升级。

AidStream通用流程如下图所示:

AidStream通用流程图

系统版本与硬件型号汇总

操作系统硬件型号版本号
ubuntu型号(6490-932)2204
ubuntu型号(6490-932)2404
aidlux融合系统型号(6490-932)2204
aidlux融合系统型号(6490-932)2204
ubuntu型号(8550-972)2204
ubuntu型号(8550-850)2204

通用示例参考

tips
**💡💡注意💡💡**
<用户自定义地址>:请与使用环境地址一致 (例如:rtsp://admin:aidlux123@192.168.111.236:554)

系统版本ubuntu2204-硬件型号6490-932

bash
gst-launch-1.0 rtspsrc location=<用户自定义地>/h264/ch1/main/av_stream \
! rtph264depay \
! h264parse \
! v4l2h264dec capture-io-mode=5 output-io-mode=2 \
! qtivtransform \
! video/x-raw,format=RGB \
! qtivtransform \
! video/x-raw\(memory:GBM\),format=NV12,colorimetry=bt601 \
! v4l2h264enc capture-io-mode=2 output-io-mode=5 \
! h264parse \
! rtspclientsink location=<用户环境地>/test-111

该实例中用到了如下插件:

qtivtransform 插件

v4l2h264dec 插件

v4l2h264enc 插件

系统版本ubuntu2404-硬件型号6490-932

bash
gst-launch-1.0 rtspsrc location=<用户自定义地>/h264/ch1/main/av_stream latency=200 protocols=tcp \
! rtph264depay \
! h264parse \
! v4l2h264dec capture-io-mode=4 output-io-mode=4 \
! video/x-raw,format=NV12,colorimetry=bt709 \
! qtivtransform engine=3 \
! video/x-raw,format=RGB,colorimetry=bt709 \
! qtivtransform engine=3 \
! video/x-raw,format=NV12,colorimetry=bt709 \
! v4l2h264enc capture-io-mode=4 output-io-mode=4 \
! h264parse \
! rtspclientsink location=<用户自定义地>/test-111

该实例中用到了如下插件:

qtivtransform 插件

v4l2h264dec 插件

v4l2h264enc 插件

tips
**💡💡6490 aidlux2204融合系统 执行时请设置以下环境变量💡💡**

export GST_PLUGIN_PATH=/opt/ubun20/usr/lib/aarch64-linux-gnu/gstreamer-1.0/ && export  
LD_LIBRARY_PATH=/opt/ubun20/usr/lib/aarch64-linux-gnu/:/opt/ubun20/usr/lib:/usr/local/lib/aidlux_opencv/lib/:$LD_LIBRARY_PATH

系统版本aidlux2204融合系统-硬件型号6490-932

bash
gst-launch-1.0 rtspsrc location=<用户自定义地>/h264/ch1/main/av_stream \
! rtph264depay \
! h264parse \
! qtivdec \
! qtivtransform \
! video/x-raw,format=RGB \
! qtivtransform \
! qtic2venc \
! video/x-h264,profile=baseline \
! h264parse \
! rtspclientsink location=<用户自定义地>/test-111

该实例中用到了如下插件:

编码插件:qtic2venc 解码插件:qtivdec

qtivtransform 插件

系统版本aidlux2404融合系统-硬件型号6490-932

bash
gst-launch-1.0 rtspsrc location=<用户自定义地>/h265/ch1/main/av_stream \
! rtph264depay \
! h264parse \
! qtivdec \
! qtivtransform \
! video/x-raw,format=RGB \
! qtivtransform \
! qtic2venc \
! video/x-h264,profile=baseline \
! h264parse \
! rtspclientsink location=<用户自定义地>/test-21

编码插件:qtic2venc 解码插件:qtivdec

该实例中用到了如下插件:

qtivtransform 插件

v4l2h264dec 插件

v4l2h264enc 插件

系统版本ubuntu2404-硬件型号8550-972

H.264

bash
gst-launch-1.0 rtspsrc location=<用户自定义地>/h264/ch1/main/av_stream \
! rtph264depay \
! h264parse \
! qtic2vdec \
! qtivtransform engine=2 \
! video/x-raw,format=RGB \
! qtivtransform engine=2 \
! qtic2venc \
! queue \
! h264parse \
! rtspclientsink protocols=tcp location=<用户自定义地>/test-811

该实例中用到了如下插件:

编码插件:qtic2venc 解码插件:qtic2vdec

qtivtransform 插件

纯四合一

tips
<1920,1080> 可替换为其他可用分辨率如<3840,2160>
bash
export WAYLAND_DISPLAY=wayland-1 && export XDG_RUNTIME_DIR=/run/user/root && gst-launch-1.0 -e qtivcomposer name=mixer \
sink_0::position="<0, 0>" sink_0::dimensions="<1920, 1080>" \
sink_1::position="<1920, 0>" sink_1::dimensions="<1920, 1080>" \
sink_2::position="<0, 1080>" sink_2::dimensions="<1920, 1080>" \
sink_3::position="<1920, 1080>" sink_3::dimensions="<1920, 1080>" \
! video/x-raw\(memory:GBM\),format=NV12,width=3840,height=2160 ! qtic2venc ! h264parse config-interval=1 ! rtspclientsink protocols=tcp location=rtsp://192.168.111.115:8554/test-811 \
rtspsrc location=<用户自定义地>/h265/ch1/main/av_stream latency=100 ! rtph264depay ! h264parse config-interval=-1 ! qtic2vdec ! qtivtransform engine=2 ! mixer. \
rtspsrc location=<用户自定义地>/h265/ch1/main/av_stream latency=100 ! rtph264depay ! h264parse config-interval=-1 ! qtic2vdec ! qtivtransform engine=2 ! mixer. \
rtspsrc location=<用户自定义地>/h265/ch1/main/av_stream latency=100 ! rtph264depay ! h264parse config-interval=-1 ! qtic2vdec ! qtivtransform engine=2 ! mixer. \
rtspsrc location=<用户自定义地>/h265/ch1/main/av_stream latency=100 ! rtph264depay ! h264parse config-interval=-1 ! qtic2vdec ! qtivtransform engine=2 ! mixer.

该实例中用到了如下插件:

编码插件:qtic2venc 解码插件:qtic2vdec

qtivtransform 插件

qtivcomposer 插件

H.265

bash
gst-launch-1.0 rtspsrc location=<用户自定义地>/h265/ch1/main/av_stream \
! rtph265depay \
! h265parse \
! qtic2vdec \
! qtivtransform engine=2 \
! video/x-raw,format=RGB \
! qtivtransform engine=2 \
! qtic2venc \
! queue \
! h265parse \

该实例中用到了如下插件:

编码插件:qtic2venc 解码插件:qtic2vdec

qtivtransform 插件

系统版本ubuntu2204-硬件型号8550-850

bash
export WAYLAND_DISPLAY=wayland-1 && export XDG_RUNTIME_DIR=/run/user/root && GST_DEBUG=3 gst-launch-1.0 -e \
rtspsrc location=<用户自定义地>/h265/ch1/main/av_stream ! rtph265depay ! h265parse ! qtic2vdec ! \
qtivtransform engine=2 ! video/x-raw\(memory:GBM\),format=NV12,width=3840,height=2160,framerate=20/1 ! qtivtransform engine=2 ! \
queue ! tee name=split \
split. ! queue ! qtivcomposer name=mixer1 ! queue ! video/x-raw,format=NV12,width=3840,height=2176,framerate=20/1 ! qtic2venc ! queue ! h265parse ! mp4mux ! filesink location=./3840_video_4k_20fps.mp4 sync=false \
split. ! queue ! qtimlvconverter name=qmlconvert_1  ! qtimlqnn name=qtimlqnn_1 model=./640_yolov8s_qcs8550_w8a8.qnn228.aarch64.gcc9_4.so  backend=/usr/lib/libQnnHtp.so  ! \
qtimlvdetection threshold=75.0 results=10 module=ml-vdetection-yolov8 labels=./yolov8.labels ! \
video/x-raw\(memory:GBM\) ! capsfilter name=ml_capsfilter ! mixer1.

编码插件:qtic2venc 解码插件:qtic2vdec

qtivtransform 插件

qtivcomposer 插件