# 将 Qualcomm IM SDK 部署为容器

Source: [https://docs.qualcomm.com/doc/80-70017-50SC/topic/application-deployment-within-container-api-gstd.html](https://docs.qualcomm.com/doc/80-70017-50SC/topic/application-deployment-within-container-api-gstd.html)

在 Docker 容器内构建 Qualcomm IM SDK 并准备可以部署至支持 Qualcomm Linux 的 Edge 设备中的最终的设备 Docker 镜像。这使用户能够使用 AI 工作流微服务并通过 Qualcomm IM SDK 构建各种类型的 AI pipeline。

Figure : 容器内的 Qualcomm IM SDK - 架构
            
            ![](data:image/jpeg;base64,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)

该表列出了从源代码构建 Qualcomm IM SDK docker 容器所需的组件：

Table : Qualcomm IM SDK docker 容器组件

| 组件 | 说明 |
| :--- | :--- |
| 平台 eSDK | <ul class="ul" id="application-deployment-within-container-api-gstd__ul_hnh_nyc_pdc"><br>                                    <li class="li">提供 Qualcomm IM SDK 的平台依赖项。</li><br><br>                                    <li class="li">包含平台库和头文件。</li><br><br>                                </ul> |
| QualcommIM SDK 源代码 | 包含插件和配方文件的源代码，用于构建和定义编译时依赖项。 |
| solutions-microservices | 提供微服务所需的 AI pipeline。 |
| sdk-tools | <ul class="ul" id="application-deployment-within-container-api-gstd__ul_h3b_5yc_pdc"><br>                                    <li class="li">提供 docker 文件和一组帮助程序脚本来生成 Qualcomm IM SDK 设备 docker 容器。</li><br><br>                                    <li class="li">为参考 docker 提供<em class="ph i">run</em>命令，以及用于运行 docker 容器的 YAML 组合文件。</li><br><br>                                    <li class="li">映射所有必需的平台设备和库，以在 docker 容器内提供硬件加速。</li><br><br>                                </ul> |

## 编译 Qualcomm IM SDK docker 镜像

Source: [https://docs.qualcomm.com/doc/80-70017-50SC/topic/application-deployment-within-container-api-gstd.html](https://docs.qualcomm.com/doc/80-70017-50SC/topic/application-deployment-within-container-api-gstd.html)

### 关于此任务

### 过程

1. 创建根工作空间：
                
mkdir <your workspace>/iot-solutionsCopy to clipboard

该根工作区包含以下内容：
    - 已提取Platform eSDK
    - meta-qti-gst
    - gst-plugins-qti-oss
    - solutions-microservices
    - sdk-tools
2. 获取Platform eSDK。 
                
Platform eSDK 提供了专门环境的平台库集合，为开发者提供了针对特定的基于 Yocto 的Qualcomm Linux 版本量身定制的交叉开发工具链和库。

用户可以使用预编译的 Platform eSDK 或生成自己的 Platform eSDK。该表将指导用户完成这两项操作的具体说明：

| 使用 Platform eSDK | 说明 |
    | :--- | :--- |
    | 预编译 Platform eSDK | [下载并安装 Platform eSDK](https://docs.qualcomm.com/bundle/publicresource/topics/80-70017-51/install-sdk.html) |
    | 生成您自己的 Platform eSDK | [生成 eSDK](https://docs.qualcomm.com/bundle/publicresource/topics/80-70017-254/how_to.html#generate-an-esdk) |
3. 克隆以下项目：
                
1. Qualcomm IM SDK 项目：

            # Clone QIM SDK plugins source
            
            cd <your workspace>/iot-solutions
            git clone https://git.codelinaro.org/clo/le/platform/vendor/qcom-opensource/gst-plugins-qti-oss.git -b imsdk.lnx.2.0.0.r2-rel
            cd gst-plugins-qti-oss
            git checkout 9fb4a7a403f9da9ee48afd6817089be5f944a127
            
            # Clone QIM SDK recipes
            cd <your workspace>/iot-solutions
            git clone https://git.codelinaro.org/clo/le/meta-qti-gst.git -b imsdk.lnx.2.0.0.r2-rel
            cd meta-qti-gst
            git checkout f4860997cf752ea907516e91fe53768215a520e0
            Copy to clipboard
    2. Solutions-Microservices 项目：

            cd <your workspace>/iot-solutions
            git clone https://git.codelinaro.org/clo/le/solutions-microservices.git -b iot-solutions.lnx.1.0
            cd solutions-microservices
            git checkout dbb4b5c065da1d66b07714ee634848caf32ff9df
            Copy to clipboard
    3. SDK-tools 项目：

            cd <your workspace>/iot-solutions
            git clone https://git.codelinaro.org/clo/le/sdk-tools.git -b imsdk-tools.lnx.1.0
            cd sdk-tools
            git checkout cf529cfb15942ad3e39b3e23f8fc5d30e89923d1
            Copy to clipboard
4. 配置构建：
                
注释： 如果您是第一次构建 Qualcomm IM SDK docker 版本，要在计算机上设置 docker，请参阅 [https://git.codelinaro.org/clo/le/sdk-tools/-/blob/imsdk-tools.lnx.1.0/qimsdk/README.md#Prerequisites](https://git.codelinaro.org/clo/le/sdk-tools/-/blob/imsdk-tools.lnx.1.0/qimsdk/README.md#Prerequisites)。

更新所需目标的 JSON 配置文件：

        cd <your workspace>/sdk-tools/qimsdk/targets
        # There is configuration file for every platform.  This will be optimized soon, and Configuration file will be only one.
        # Update the following entries in config_qcm6490.json file:
        
        "Additional_tag_container" [Optional] Append this string to docker image name.
        
        "Additional_tag_image" [Optional] Docker image Tag.
        
        "Docker_image_path" [Mandatory] Path to directory where docker image and docker run script will be exported to.
        
        "Target_device_ID" [Optional] adb device ID. You can check device ID with “adb devices” command. Keep it empty if device is not attached to PC.
        
        "Default_target"  [Mandatory] Set device which you about to use (“qcm6490” or "qcs9100"). This will be removed soon.
        
        "IM_SDK_Source_Dir" [Mandatory] Path to director with QIM GST plugins source code.
        
        "IM_SDK_Meta_Dir" [Mandatory] Path to director with QIM GST plugins bitbake recipes folder.
        
        "Solution_Microservices_Dir" [Mandatory] Path to solutions-microservices directory, which contains all qimsdk microservices shell scripts. ***Note: Path provided must point to solutions-microservices directory!***
        
        "Path_to_eSDK_dir" [Mandatory] Path to directory where Platform eSDK is extracted.
        Copy to clipboard

![](data:image/png;base64,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)
5. 编译并导出 docker 镜像：
    1. 搭建环境：
                        
cd <your workspace>/sdk-tools/qimsdkCopy to clipboard

            source scripts/docker_env_setup.shCopy to clipboard
    2. 编译 docker 镜像：
                        
qimsdk-docker-build-image targets/config_qcm6490.jsonCopy to clipboard
    3. 将 docker 镜像和 docker 运行脚本导出至 Docker\_image\_path 目录。
                        
qimsdk-docker-device-save-image targets/config_qcm6490.jsonCopy to clipboard
6. 在设备上安装 docker 镜像：
                
ssh root@<device-ip>Copy to clipboard

密码是 `oelinux123`。

    1. 在设备 shell 中创建 docker 目录：
                        
mkdir -p /opt/dockerCopy to clipboard

            chmod -R 777 /opt/dockerCopy to clipboard
    2. 将 docker 镜像从 Linux 主机复制至目标设备：
                        
scp <Docker_image_path>/* root@<device-ip>:/opt/dockerCopy to clipboard
    3. 配置 /opt/data 目录的读/写权限。
                        
/opt/data 目录从平台设备文件系统挂载到设备容器文件系统。

            echo '{"data-root": "/mnt/overlay/docker"}' > /etc/docker/daemon.jsonCopy to clipboard

重启 docker：

            systemctl restart dockerCopy to clipboard

            rm -rf /var/lib/dockerCopy to clipboard

验证 docker 目录配置是否成功：

            docker info | grep StorageCopy to clipboard
    4. 在设备 shell 中运行命令：
                        
cd /opt/dockerCopy to clipboard

            docker load -i /opt/docker/<qimsdk-docker-image>Copy to clipboard

            mv docker-compose-config_qcm6490.yml docker-compose.ymlCopy to clipboard

            chmod 777 docker_run_config_qcm6490.shCopy to clipboard

| 字段 | 说明 |
        | :--- | :--- |
        | &lt;Docker\_image\_path&gt; | 安装 docker 映像 TAR 文件和脚本的目录。 |
        | &lt;qimsdk-docker-image&gt; | 包含 Qualcomm IM SDK docker 镜像的文件的名称。例如， qimsdk.tar。 |

## 为摄像头运行 docker 镜像

Source: [https://docs.qualcomm.com/doc/80-70017-50SC/topic/application-deployment-within-container-api-gstd.html](https://docs.qualcomm.com/doc/80-70017-50SC/topic/application-deployment-within-container-api-gstd.html)

注释： 本节还在更新中，更新尚未与当前版本合并。

### 前提条件

[编译 Qualcomm IM SDK docker 镜像](https://docs.qualcomm.com/doc/80-70017-50SC/topic/application-deployment-within-container-api-gstd.html#build-and-run-qualcomm-im-sdk-docker-image).

### 步骤

使用以下选项之一运行 Qualcomm IM SDK docker 镜像：

- Docker 运行命令：
    shell 脚本中提供了 docker 运行命令。

    1. 在设备 shell 中，运行 docker 脚本：

            sh /opt/docker/docker_run_config_qcm6490.shCopy to clipboard
    2. 列出所有正在运行的容器：

            docker ps -aCopy to clipboard
    3. 进入Qualcomm IM SDK 容器

            docker exec -it <qimsdk-docker-image-name> bashCopy to clipboard
- Docker compose 命令：
    Docker compose 提供同时运行多个 docker 容器的选项。

1. 在设备 shell 中，转到 docker 目录：

            cd /opt/dockerCopy to clipboard
    2. 运行 docker-compose bash 脚本：

            docker-compose run <qimsdk-docker-image-name> bashCopy to clipboard

| 字段 | 说明 |
        | :--- | :--- |
        | &lt;qimsdk-docker-image-name&gt; | Qualcomm IM SDK docker 镜像的名称。 |
        | qimsdk | 默认的 Docker 镜像。 |

        要检查操作名称，请运行 `docker
                                        images` 命令。

## 摄像头的容器用例

Source: [https://docs.qualcomm.com/doc/80-70017-50SC/topic/application-deployment-within-container-api-gstd.html](https://docs.qualcomm.com/doc/80-70017-50SC/topic/application-deployment-within-container-api-gstd.html)

在运行用例之前，启用显示：

    export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1Copy to clipboard

关于用例，请参阅 [多媒体用例](https://docs.qualcomm.com/doc/80-70017-50SC/topic/multimedia-use-cases.html)。

## 运行 GStD 的 docker 镜像

Source: [https://docs.qualcomm.com/doc/80-70017-50SC/topic/application-deployment-within-container-api-gstd.html](https://docs.qualcomm.com/doc/80-70017-50SC/topic/application-deployment-within-container-api-gstd.html)

在现有的Qualcomm IM SDK容器中安装GStD，然后进行端口映射，使客户端能够从主机和容器内与GStD通信。

### 前提条件

[编译 Qualcomm IM SDK docker 镜像](https://docs.qualcomm.com/doc/80-70017-50SC/topic/application-deployment-within-container-api-gstd.html#build-and-run-qualcomm-im-sdk-docker-image).

### 步骤

使用以下选项之一运行 Qualcomm IM SDK docker 镜像：

- Docker 运行命令：
    1. 在设备 shell 中，运行以下 docker 脚本：

            sed -i 's/--user qimsdk/--user root -p 5001:5001/g' /opt/docker/docker_run_config_qcm6490.shCopy to clipboard

            sh /opt/docker/docker_run_config_qcm6490.shCopy to clipboard

            docker ps -aCopy to clipboard

            docker exec -it <qimsdk-docker-image-name> bashCopy to clipboard
    2. 在 docker shell 中，配置并启用显示：

            export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1Copy to clipboard

        在后台运行 GStD：

            gstd-1.0 -a 0.0.0.0 -p 5001Copy to clipboard
- Docker compose 命令：
    Docker compose 提供同时运行多个 docker 容器的选项。

1. 在设备 shell 中，转到 docker 目录：

            cd /opt/dockerCopy to clipboard
    2. 运行 docker-compose bash 脚本：

            docker-compose run <qimsdk-docker-image-name> bashCopy to clipboard

| 字段 | 说明 |
        | :--- | :--- |
        | &lt;qimsdk-docker-image-name&gt; | Qualcomm IM SDK docker 镜像的名称。 |
        | qimsdk | 默认的 Docker 镜像。 |

        要检查操作名称，请运行 `docker
                                        images` 命令。

## 使用 GStD 的容器用例

Source: [https://docs.qualcomm.com/doc/80-70017-50SC/topic/application-deployment-within-container-api-gstd.html](https://docs.qualcomm.com/doc/80-70017-50SC/topic/application-deployment-within-container-api-gstd.html)

以下是使用 GStD 的视频编码和 AI pipeline的一些容器用例：

### 视频编码

对解码后的流进行编码、复用，并将其保存到主机和 docker 之间共享的公共目录中。

1. 在容器中，创建 pipeline：

        gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_create enc filesrc location=/opt/data/1280_720_h264_30fps_1min.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! v4l2h264enc capture-io-mode=5 output-io-mode=5 ! h264parse ! queue ! mp4mux ! queue ! filesink location=/opt/data/docker_video.mp4Copy to clipboard
2. 控制 pipeline：

        gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_play encCopy to clipboard

        gst-client-1.0 -a 0.0.0.0 -p 5001 bus_filter enc error+eosCopy to clipboard

        gst-client-1.0 -a 0.0.0.0 -p 5001 bus_read encCopy to clipboard

    shell 被阻止以检查串流结束 (EOS) 的错误。
3. shell 解除阻塞后停止 pipeline：

        gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_stop encCopy to clipboard

### AI pipeline：对解码流的推断和预览

对解码的流执行推理，使用[qtioverlay](https://docs.qualcomm.com/doc/80-70017-50SC/topic/qtioverlay.html)插件绘制边界框/文本，并在显示屏上实时渲染。

1. 在 docker 中进行后处理：
    1. 创建 pipeline：

            gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_create postproc qtisocketsrc socket=/opt/data/tensors.sock ! neural-network/tensors, type=INT8, dimensions="<<1,8400,4>,<1,8400>,<1,8400>>" ! queue ! qtimlvdetection threshold=75.0 results=4 module=yolov8 constants="YoloV8,q-offsets=<-107.0,-128.0,0.0>,q-scales=<3.093529462814331,0.00390625,1.0>;" labels=/opt/data/yolov8n.labels ! text/x-raw ! filesink buffer-mode=unbuffered location=/opt/data/mloutput1.txtCopy to clipboard
    2. 控制 pipeline：

            gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_play postprocCopy to clipboard

            gst-client-1.0 -a 0.0.0.0 -p 5001 bus_filter postproc error+eos && gst-client-1.0 -a 0.0.0.0 -p 5001 bus_read postprocCopy to clipboard

        shell 被阻止以检查 EOS 的错误。
2. 在设备上，执行推理：

        export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1 && gst-launch-1.0 -e \
        qtimlvconverter name=preproc mode=image-batch-non-cumulative \
        qtimltflite name=inference delegate=external external-delegate-path=libQnnTFLiteDelegate.so external-delegate-options="QNNExternalDelegate,backend_type=htp,htp_precision=(string)1;" model=/opt/data/YoloV8N_Detection_Quantized.tflite \
        filesrc location=/opt/data/1280_720_h264_30fps_1min.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! \
        preproc. preproc. ! queue ! inference. inference. ! neural-network/tensors, type=INT8, dimensions="<<1,8400,4>,<1,8400>,<1,8400>>" ! qtisocketsink socket=/opt/data/tensors.sockCopy to clipboard
3. 在 docker shell 中，在 shell 解除阻塞后停止 pipeline：

        gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_stop postprocCopy to clipboard

### AI pipeline：容器内张量的后处理，以及 Native 层的预处理和推理 

使用 [qtisocketsrc](https://docs.qualcomm.com/doc/80-70017-50SC/topic/qtisocketsrc.html) 和 [qtisocketsink](https://docs.qualcomm.com/doc/80-70017-50SC/topic/qtisocketsink.html) 插件将输出张量传输到 docker 容器。用例展示了容器内运行的应用程序如何理解多维张量布局。

1. 在 docker 中：
    1. 创建 pipeline：

            gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_create postproc qtisocketsrc socket=/opt/data/tensors.sock ! neural-network/tensors, type=INT8, dimensions="<<1,8400,4>,<1,8400>,<1,8400>>" ! queue ! qtimlvdetection threshold=75.0 results=4 module=yolov8 constants="YoloV8,q-offsets=<-107.0,-128.0,0.0>,q-scales=<3.093529462814331,0.00390625,1.0>;" labels=/opt/data/yolov8n.labels ! text/x-raw ! filesink buffer-mode=unbuffered location=/opt/data/mloutput1.txtCopy to clipboard
    2. 控制 pipeline：

            gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_play postprocCopy to clipboard

            gst-client-1.0 -a 0.0.0.0 -p 5001 bus_filter postproc error+eos && gst-client-1.0 -a 0.0.0.0 -p 5001 bus_read postprocCopy to clipboard

        shell 被阻止以检查 EOS 的错误。
2. 在设备上，运行推理：

        export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1 && gst-launch-1.0 -e \
        qtimlvconverter name=preproc mode=image-batch-non-cumulative \
        qtimltflite name=inference delegate=external external-delegate-path=libQnnTFLiteDelegate.so external-delegate-options="QNNExternalDelegate,backend_type=htp,htp_precision=(string)1;" model=/opt/data/YoloV8N_Detection_Quantized.tflite \
        filesrc location=/opt/data/1280_720_h264_30fps_1min.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! \
        preproc. preproc. ! queue ! inference. inference. ! neural-network/tensors, type=INT8, dimensions="<<1,8400,4>,<1,8400>,<1,8400>>" ! qtisocketsink socket=/opt/data/tensors.sockCopy to clipboard
3. 在 docker shell 中，在 shell 解除阻塞后停止 pipeline：

        gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_stop postprocCopy to clipboard

### AI pipeline：容器内的预处理，Native 层的推理和后处理

该用例展示了如何使用 [qtisocketsrc](https://docs.qualcomm.com/doc/80-70017-50SC/topic/qtisocketsrc.html) 和 [qtisocketsink](https://docs.qualcomm.com/doc/80-70017-50SC/topic/qtisocketsink.html) 插件以 zero copy 的方式传输摄像头帧。

1. 在设备上，运行推理：

        export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1 && gst-launch-1.0 -e \
        qtimltflite name=inference delegate=external external-delegate-path=libQnnTFLiteDelegate.so external-delegate-options="QNNExternalDelegate,backend_type=htp,htp_precision=(string)1;" model=/opt/data/YoloV8N_Detection_Quantized.tflite \
        qtimlvdetection name=postproc threshold=75.0 results=4 module=yolov8 constants="YoloV8,q-offsets=<-107.0,-128.0,0.0>,q-scales=<3.093529462814331,0.00390625,1.0>;" labels=/opt/data/yolov8n.labels \
        qtisocketsrc socket=/opt/data/tensors.sock ! neural-network/tensors, type=INT8, dimensions="<<1,640,640,3>>" ! queue ! inference. inference. ! postproc. \
        postproc. ! queue ! text/x-raw ! filesink buffer-mode=unbuffered location=/opt/data/mloutput2.txtCopy to clipboard
2. 在 docker 中，创建 pipeline：

        gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_create preproc filesrc location=/opt/data/1280_720_h264_30fps_1min.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! qtimlvconverter mode=image-batch-non-cumulative ! queue ! neural-network/tensors, type=INT8, dimensions="<<1,640,640,3>>" ! qtisocketsink socket=/opt/data/tensors.sockCopy to clipboard

    1. 控制 pipeline：

            gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_play preprocCopy to clipboard

            gst-client-1.0 -a 0.0.0.0 -p 5001 bus_filter preproc error+eos && gst-client-1.0 -a 0.0.0.0 -p 5001 bus_read preprocCopy to clipboard

        shell 被阻止以检查 EOS 的错误。
    2. shell 解除阻塞后停止 pipeline：

            gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_stop preprocCopy to clipboard

### AI pipeline：容器中的预处理和后处理，以及 Native 层的推理

使用 [qtisocketsrc](https://docs.qualcomm.com/doc/80-70017-50SC/topic/qtisocketsrc.html) 和 [qtisocketsink](https://docs.qualcomm.com/doc/80-70017-50SC/topic/qtisocketsink.html) 插件以 zero copy 的方式传递数据（摄像头帧和输出张量）。

1. 在 docker 中，创建 pipeline：

        gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_create post qtisocketsrc socket=/opt/data/output.sock ! neural-network/tensors, type=INT8, dimensions="<<1,8400,4>,<1,8400>,<1,8400>>" ! queue ! qtimlvdetection threshold=75.0 results=4 module=yolov8 constants="YoloV8,q-offsets=<-107.0,-128.0,0.0>,q-scales=<3.093529462814331,0.00390625,1.0>;" labels=/opt/data/yolov8n.labels ! text/x-raw ! filesink buffer-mode=unbuffered location=/opt/data/mloutput3.txtCopy to clipboard
2. 控制 pipeline：

        gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_play postCopy to clipboard

        gst-client-1.0 -a 0.0.0.0 -p 5001 bus_filter post error+eos && gst-client-1.0 -a 0.0.0.0 -p 5001 bus_read postCopy to clipboard

    shell 被阻止以检查 EOS 的错误。
3. 在设备上，运行推理：

        export XDG_RUNTIME_DIR=/dev/socket/weston && export WAYLAND_DISPLAY=wayland-1 && gst-launch-1.0 -e \
        qtimltflite name=inference delegate=external external-delegate-path=libQnnTFLiteDelegate.so external-delegate-options="QNNExternalDelegate,backend_type=htp,htp_precision=(string)1;" model=/opt/data/YoloV8N_Detection_Quantized.tflite \
        qtisocketsrc socket=/opt/data/input.sock ! neural-network/tensors, type=INT8, dimensions="<<1,640,640,3>>" ! queue ! inference. inference. ! \
        qtisocketsink socket=/opt/data/output.sockCopy to clipboard
4. 在 docker 中，创建 pipeline：

        gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_create pre qtimlvconverter name=preproc mode=image-batch-non-cumulative \
        filesrc location=/opt/data/1280_720_h264_30fps_1min.mp4 ! qtdemux ! queue ! h264parse ! v4l2h264dec capture-io-mode=5 output-io-mode=5 ! queue ! \
        preproc. preproc. ! queue ! neural-network/tensors, type=INT8, dimensions="<<1,640,640,3>>" ! qtisocketsink socket=/opt/data/input.sockCopy to clipboard
5. 控制 pipeline：

        gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_play preCopy to clipboard

        gst-client-1.0 -a 0.0.0.0 -p 5001 bus_filter pre error+eos && gst-client-1.0 -a 0.0.0.0 -p 5001 bus_read preCopy to clipboard

    shell 被阻止以检查 EOS 的错误。
6. 在 docker shell 中，在 shell 解除阻塞后停止 pipeline：

        gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_stop preCopy to clipboard

        gst-client-1.0 -a 0.0.0.0 -p 5001 pipeline_stop postCopy to clipboard

Last Published: Nov 11, 2025

[Previous Topic
自定义 Python 示例应用程序](https://docs.qualcomm.com/bundle/publicresource/80-70017-50SC/topics/customize-a-python-sample-application.md) [Next Topic
GStreamer 命令行用例](https://docs.qualcomm.com/bundle/publicresource/80-70017-50SC/topics/gstreamer-application-use-cases.md)