MindX SDK 新增 GStreamer 插件 pipeline 编排报错
收藏回复举报
MindX SDK 新增 GStreamer 插件 pipeline 编排报错
t('forum.solved') 已解决
发表于2023-09-25 16:42:20
0 查看

您好,因为在MindX SDK中集成的gstreamer官方插件较少,我们自行将部分gstreamer的官方插件在鲲鹏服务上使用源码编译方式,重新集成到MindX SDK中,比如mpegtsmux和udpsink插件,通过集成后,使用gst-lanuch-1.0可以正常使用新增集成的mpegtsmux和udpsink插件进行推流,操作方式如下:

(mxvision_py392) [root@alias20155 opensource]# which gst-inspect-1.0
/usr/local/Ascend/mindx/mxVision/opensource/bin/gst-inspect-1.0
(mxvision_py392) [root@alias20155 opensource]# which gst-launch-1.0
/usr/local/Ascend/mindx/mxVision/opensource/bin/gst-launch-1.0
(mxvision_py392) [root@alias20155 opensource]# gst-launch-1.0 mxpi_rtspsrc rtspUrl="rtsp://admin:admin12345@10.0.15.52:554/h264/ch33/main/av_stream" ! mxpi_videodecoder deviceId=0 outputImageFormat=YUV420SP_NV12 ! mxpi_videoencoder srcRate=25 iFrameInterval=50 rcMode=1 maxBitRate=1000 ! h264parse ! mpegtsmux ! rtpmp2tpay ssrc=7890 ! udpsink host=10.0.201.51 port=10000

cke_14384.png

但参考昇腾官方文档,使用pipeline编排方式会报错:昇腾官方流程编排
具体的代码、pipeline配置文件和报错信息如下:

python 代码:

import json
import os
import cv2
import numpy as np

from StreamManagerApi import StreamManagerApi, MxDataInput, StringVector
import MxpiDataType_pb2 as MxpiDataType

# The following belongs to the SDK Process
streamManagerApi = StreamManagerApi()
# init stream manager
ret = streamManagerApi.InitManager()
if ret != 0:
    print("Failed to init Stream manager, ret=%s" % str(ret))
    exit()

# create streams by pipeline config file
# load pipline
with open("./pipeline/rtsp_in_rtp_out.pipeline", 'rb') as f:
    pipelineStr = f.read()
ret = streamManagerApi.CreateMultipleStreams(pipelineStr)
# Print error message
if ret != 0:
    print("Failed to create Stream, ret=%s" % str(ret))

# Destroy All Streams
streamManagerApi.DestroyAllStreams()

pipeline配置文件内容:

{
    "rtsp_in_rtp_out": {
        "stream_config": {
            "deviceId": "0"
        },
       "mxpi_rtspsrc0":{
            "props":{
                "rtspUrl":"rtsp://admin:admin12345@10.0.15.52:554/h264/ch33/main/av_stream"
            },
            "factory":"mxpi_rtspsrc",
            "next":"mxpi_videodecoder0"
        },
        "mxpi_videodecoder0":{
            "props":{
                "deviceId":"0",
                "inputVideoFormat":"H264",
                "outputImageFormat":"YUV420SP_NV12"
            },
            "factory":"mxpi_videodecoder",
            "next":"mxpi_videoencoder0"
        },
        "mxpi_videoencoder0":{
            "props":{
                "srcRate":"25",
                "iFrameInterval":"50",
                "rcMode":"1",
                "maxBitRate":"2048"
            },
            "factory":"mxpi_videoencoder",
            "next":"h264parse0"
        },
        "h264parse0":{
            "factory":"h264parse",
            "next":"mpegtsmux0"
        },
        "mpegtsmux0":
        {
            "factory":"mpegtsmux",
            "next":"rtpmp2tpay0"
        },
        "rtpmp2tpay0":{
            "props":{
                "ssrc":"7890"
            },
            "factory":"rtpmp2tpay",
            "next":"udpsink0"
        },
        "udpsink0":{
            "props":{
                "host":"10.0.201.51",
                "port":"10000"
            },
            "factory":"udpsink"
        }
    }
}

报错信息:

(mxvision_py392) [root@alias20155 pipeline_sample]# python rtsp_in_rtp_out_pipeline.py 
Begin to initialize Log.
The output directory of logs file exist.
Could not create logging file: No such file or directory
COULD NOT CREATE A LOGGINGFILE 20230925-163523.5830!Save logs information to specified directory.
E20230925 16:35:23.806085  5830 MxsmElement.cpp:947] [6006][stream invalid link] Links h264parse0:src and mpegtsmux0:sink_%u failed. Please check the compatibility between the port types of these two plugins.
E20230925 16:35:23.806257  5830 MxsmStream.cpp:660] [6006][stream invalid link] Link element(h264parse0) and element(mpegtsmux0) failed.
E20230925 16:35:23.806283  5830 MxsmStream.cpp:894] [6006][stream invalid link] Creates rtsp_in_rtp_out Stream failed.
E20230925 16:35:23.806306  5830 MxStreamManagerDptr.cpp:546] [6006][stream invalid link] create stream(rtsp_in_rtp_out) failed.

cke_84855.png

请问,如何正确的将gst-launch-1.0的命令的编排转换成MindX SDK支持的pipeline插件编排?

另外,在昇腾的官方文档中,仅介绍了C++的代码编排方式,代码流程编排介绍,关于python的代码流程编排能否提供对应的示例呢?

望解答,谢谢。

我要发帖子