Skip to content

AidStream

简介

AidStream 基于管道 (pipeline) 的概念,开发者可通过创建预定义的流数据处理 pipeline,将自定义处理任务 (如:AI 模型推理) 及其它内建的任务 (如:视频编解码,视频推拉流,视频流存储,等) 进行组合,实现完整的数据处理链。

AidStream通用流程如下图所示:

AidStream通用流程图

支持情况

输入流输出流 可支持的数据类型不同,当 输入流输出流 的组合在 AidStream 的支持范围内时,才可成功构建 pipeline。目前支持的 输入流输出流 的组合如下表所示:

输入 / 输出RTSP (H.264)RTSP (H.265)FileScreen
RTSP (H264)
RTSP (H265)
File
MIPI Camera
USB Camera
  • RTSP (H264):H.264编码的 RTSP 流
  • RTSP (H265):H.265编码的 RTSP 流
  • File:本地的视频文件
  • MIPI Camera:MIPI 相机
  • USB Camera:USB 相机
  • Screen:设备的显示器

通用示例参考

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

bash
gst-launch-1.0 rtspsrc \
location=rtsp://admin:aidlux123@192.168.111.236:554/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=rtsp://192.168.111.115:8554/test-111

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

bash
gst-launch-1.0 \
rtspsrc location=rtsp://admin:aidlux123@192.168.111.236:554/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=rtsp://192.168.111.115:8554/test-111

系统版本:FV04 硬件型号:8550-972

H.264

bash
gst-launch-1.0 \
rtspsrc location=rtsp://admin:aidlux123@192.168.111.236:554/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=rtsp://192.168.111.115:8554/test-811

纯四合一

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=rtsp://admin:aidlux123@192.168.111.236:554/h265/ch1/main/av_stream latency=100 ! rtph264depay ! h264parse config-interval=-1 ! qtic2vdec ! qtivtransform engine=2 ! mixer. \
rtspsrc location=rtsp://admin:aidlux123@192.168.111.236:554/h265/ch1/main/av_stream latency=100 ! rtph264depay ! h264parse config-interval=-1 ! qtic2vdec ! qtivtransform engine=2 ! mixer. \
rtspsrc location=rtsp://admin:aidlux123@192.168.111.236:554/h265/ch1/main/av_stream latency=100 ! rtph264depay ! h264parse config-interval=-1 ! qtic2vdec ! qtivtransform engine=2 ! mixer. \
rtspsrc location=rtsp://admin:aidlux123@192.168.111.236:554/h265/ch1/main/av_stream latency=100 ! rtph264depay ! h264parse config-interval=-1 ! qtic2vdec ! qtivtransform engine=2 ! mixer.

系统版本:FV04 硬件型号: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=rtsp://admin:aidlux123@192.168.111.236:554/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.