# aid-streamer-gst

#### yolov8执行

#source /opt/qcom/qirp-sdk/qirp-setup.sh
#export WAYLAND_DISPLAY=wayland-1 && export XDG_RUNTIME_DIR=/run/user/root
#gst-launch-1.0 -e rtspsrc location=rtsp://admin:aidlux123@192.168.111.237:554/h264/ch1/main/av_stream latency=200 protocols=tcp ! rtph264depay ! h264parse config-interval=-1 ! qtic2vdec ! qtivtransform engine=2 ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=25/1 ! tee name=t t. ! queue ! qtimetamux name=mux t. ! queue max-size-buffers=4 max-size-bytes=0 max-size-time=0 ! qtimlvconverter ! qtimlqnn name=qtimlqnn_1 model=./640_yolov8s_qcs8550_w8a8.qnn228.aarch64.gcc9_4.so backend=/opt/qcom/qirp-sdk/lib/aarch64-oe-linux-gcc11.2/libQnnHtp.so ! qtimlvdetection threshold=0.0 results=10 module=ml-vdetection-yolov8 labels=./yolov8.labels ! text/x-raw,format=utf8 ! mux. mux. ! qtioverlay  ! qtic2venc ! h264parse ! rtspclientsink protocols=tcp location=rtsp://192.168.111.115:8554/test-111

#### 集成aidlite的ast-aidlite插件

### yolov5
gst-launch-1.0 -e rtspsrc location=rtsp://admin:aidlux123@192.168.111.237:554/h264/ch1/main/av_stream latency=200 protocols=tcp \
! rtph264depay ! h264parse config-interval=-1 ! qtic2vdec ! qtivtransform engine=2 \
! video/x-raw\(memory:GBM\),format=NV12,width=3840,height=2160,framerate=25/1 ! tee name=t \
t. ! queue ! qtimetamux name=mux \
t. ! queue max-size-buffers=4 max-size-bytes=0 max-size-time=0 \
! qtivtransform engine=2 ! video/x-raw\(memory:GBM\),format=BGR   \
! ast-aidlite model=./cutoff_yolov5s_sigmoid_qcs8550_w8a8.qnn236.ctx.bin roi-width=3840 roi-height=2160 box-thresh=0.5 nms-thresh=0.45 ! text/x-raw,format=utf8 ! mux. \
mux.src ! qtioverlay engine=1 ! qtic2venc ! h264parse ! rtspclientsink protocols=tcp location=rtsp://192.168.111.115:8554/test-111

### yolov8 目标识别
gst-launch-1.0 -e rtspsrc location=rtsp://admin:aidlux123@192.168.111.237:554/h264/ch1/main/av_stream latency=200 protocols=tcp \
! rtph264depay ! h264parse config-interval=-1 ! qtic2vdec ! qtivtransform engine=2 \
! video/x-raw\(memory:GBM\),format=NV12,width=3840,height=2160,framerate=25/1 ! tee name=t \
t. ! queue ! qtimetamux name=mux \
t. ! queue max-size-buffers=4 max-size-bytes=0 max-size-time=0 \
! qtivtransform engine=2 ! video/x-raw\(memory:GBM\),format=BGR   \
! ast-aidlite model-type=yolov8-detection model=./cutoff_yolov8s_qcs8550_fp16.qnn231.ctx.bin roi-width=3840 roi-height=2160 box-thresh=0.3 nms-thresh=0.3 ! text/x-raw,format=utf8 ! mux. \
mux.src ! qtioverlay engine=1 ! qtic2venc ! h264parse ! rtspclientsink protocols=tcp location=rtsp://192.168.111.115:8554/test-111


### yolov8 语义分割
## 注意：
# sink 需要 video/x-raw(memory:GBM),format=BGR
# src 推荐输出 video/x-raw(memory:GBM),format=BGRA
# 输出 width/height/framerate 必须与主视频一致
# 下游推荐接 qtivcomposer

gst-launch-1.0 -e \
rtspsrc location=rtsp://admin:aidlux123@192.168.111.237:554/h264/ch1/main/av_stream latency=200 protocols=tcp \
! rtph264depay ! h264parse config-interval=-1 ! qtic2vdec ! qtivtransform engine=2 \
! video/x-raw\(memory:GBM\),format=NV12,width=3840,height=2160,framerate=25/1 ! tee name=t \
t. ! queue ! qtivcomposer name=mixer1 ! queue ! qtic2venc ! h264parse ! rtspclientsink protocols=tcp location=rtsp://192.168.111.115:8554/test-111 \
t. ! queue max-size-buffers=4 max-size-bytes=0 max-size-time=0 \
! qtivtransform engine=2 ! video/x-raw\(memory:GBM\),format=BGR \
! ast-aidlite-video model-type=yolov8-segmentation model=./cutoff_yolov8s-seg_qcs8550_fp16.qnn236.ctx.bin roi-width=3840 roi-height=2160 box-thresh=0.3 nms-thresh=0.3 \
! video/x-raw\(memory:GBM\),format=BGRA,width=3840,height=2160,framerate=25/1 \
! mixer1.

