v2.3で作成したアプリがv2.5ではエラーとなる

100 views
Skip to first unread message

w. ito

unread,
Dec 25, 2023, 2:54:57 AM12/25/23
to EDGEMATRIX Stream Toolkit Forum
お世話になっております。

表題の件について、 v2.3.0b4-2で作成・動作確認したアプリケーションを
v2.5.0b0-1の別端末で動作させると以下のようなエラーが発生します。
おそらくバージョン違いに起因するエラーかと思うのですが
修正箇所や問題の切り分け方法について教えていただけますでしょうか。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーー
INFO:toolkit:[local rtsp] stream ready at rtsp://127.0.0.1:8554/test
INFO:toolkit:[local rtsp]
INFO:toolkit:[gstd]
INFO:toolkit:[gstd] GstD version 0.14.0
INFO:toolkit:[gstd] Copyright (C) 2015-2021 RidgeRun (https://www.ridgerun.com)
INFO:toolkit:[gstd]
INFO:toolkit:[gstd]
DEBUG:toolkit:wating for the pipeline to start...
2023-12-19 10:23:57,717 ERROR Change pipeline state error GstdError
2023-12-19 10:23:57,717 ERROR Unable to play requested pipeline RiverMonitoringStream001_8939_ai
2023-12-19 10:23:57,719 ERROR Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/edgestream/controller/mediamanager.py", line 93, in play_pipeline
self._gstd_client.pipeline_play(pipeline_descriptor.name)
File "/usr/lib/python3/dist-packages/pygstc/gstc.py", line 953, in pipeline_play
self._send_cmd_line(['pipeline_play'] + parameters)
File "/usr/lib/python3/dist-packages/pygstc/gstc.py", line 239, in _send_cmd_line
result['code'])
pygstc.gstcerror.GstdError: ('State error', 14)
2023-12-19 10:23:57,719 ERROR EdgeStream Pipeline Start Error
2023-12-19 10:23:57,719 ERROR EdgeStream Pipeline Start Error
2023-12-19 10:23:57,720 ERROR EdgeStreamPipeline MediaEntities failed to run
2023-12-19 10:23:57,720 ERROR EdgeStreamPipeline MediaEntities failed to run
2023-12-19 10:23:57,721 ERROR Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/edgestream/controller/mediamanager.py", line 93, in play_pipeline
self._gstd_client.pipeline_play(pipeline_descriptor.name)
File "/usr/lib/python3/dist-packages/pygstc/gstc.py", line 953, in pipeline_play
self._send_cmd_line(['pipeline_play'] + parameters)
File "/usr/lib/python3/dist-packages/pygstc/gstc.py", line 239, in _send_cmd_line
result['code'])
pygstc.gstcerror.GstdError: ('State error', 14)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/edgestream/controller/edgestreampipeline.py", line 337, in start
entity.run()
File "/usr/lib/python3/dist-packages/edgestream/controller/videoai.py", line 123, in run
super().run()
File "/usr/lib/python3/dist-packages/edgestream/controller/mediaentity.py", line 94, in run
self._media_manager.play_pipeline(self.pipeline_descriptor)
File "/usr/lib/python3/dist-packages/edgestream/controller/mediamanager.py", line 100, in play_pipeline
ChangePipelineStateError)
File "/usr/lib/python3/dist-packages/edgestream/utils/errorlogger.py", line 28, in log_exception
raise exception_class(exception_message)
edgestream.controller.controllererror.ChangePipelineStateError: Unable to play requested pipeline RiverMonitoringStream001_8939_ai
2023-12-19 10:23:57,721 ERROR Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/edgestream/controller/mediamanager.py", line 93, in play_pipeline
self._gstd_client.pipeline_play(pipeline_descriptor.name)
File "/usr/lib/python3/dist-packages/pygstc/gstc.py", line 953, in pipeline_play
self._send_cmd_line(['pipeline_play'] + parameters)
File "/usr/lib/python3/dist-packages/pygstc/gstc.py", line 239, in _send_cmd_line
result['code'])
pygstc.gstcerror.GstdError: ('State error', 14)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/edgestream/controller/edgestreampipeline.py", line 337, in start
entity.run()
File "/usr/lib/python3/dist-packages/edgestream/controller/videoai.py", line 123, in run
super().run()
File "/usr/lib/python3/dist-packages/edgestream/controller/mediaentity.py", line 94, in run
self._media_manager.play_pipeline(self.pipeline_descriptor)
File "/usr/lib/python3/dist-packages/edgestream/controller/mediamanager.py", line 100, in play_pipeline
ChangePipelineStateError)
File "/usr/lib/python3/dist-packages/edgestream/utils/errorlogger.py", line 28, in log_exception
raise exception_class(exception_message)
edgestream.controller.controllererror.ChangePipelineStateError: Unable to play requested pipeline RiverMonitoringStream001_8939_ai
DEBUG:toolkit:FAILED to start the pipeline
INFO:toolkit:[gstd] 0:00:03.109905600 8935 0x7f54003d40 DEBUG emcustom gstemcustom.c:272:gst_emcustom_set_property:<emcustom> set_property
INFO:toolkit:[gstd] 0:00:03.109945408 8935 0x7f54003d40 DEBUG emcustom gstemcustom.c:272:gst_emcustom_set_property:<emcustom> set_property
INFO:toolkit:[gstd] 0:00:03.109965216 8935 0x7f54003d40 DEBUG emcustom gstemcustom.c:272:gst_emcustom_set_property:<emcustom> set_property
INFO:toolkit:[gstd] 0:00:03.109986848 8935 0x7f54003d40 DEBUG emcustom gstemcustom.c:272:gst_emcustom_set_property:<emcustom> set_property
INFO:toolkit:[gstd] 0:00:03.154080960 8935 0x7f54003d40 DEBUG emcustom gstemcustom.c:309:gst_emcustom_get_property:<emcustom> get_property
INFO:toolkit:[gstd] 0:00:03.154107840 8935 0x7f54003d40 DEBUG emcustom gstemcustom.c:309:gst_emcustom_get_property:<emcustom> get_property
INFO:toolkit:[gstd] 0:00:03.154120160 8935 0x7f54003d40 DEBUG emcustom gstemcustom.c:309:gst_emcustom_get_property:<emcustom> get_property
INFO:toolkit:[gstd] 0:00:03.154130944 8935 0x7f54003d40 DEBUG emcustom gstemcustom.c:309:gst_emcustom_get_property:<emcustom> get_property
INFO:toolkit:[gstd] 0:00:03.154147680 8935 0x7f54003d40 DEBUG emcustom gstemcustom.c:309:gst_emcustom_get_property:<emcustom> get_property
INFO:toolkit:[gstd] 0:00:03.154157568 8935 0x7f54003d40 DEBUG emcustom gstemcustom.c:309:gst_emcustom_get_property:<emcustom> get_property
INFO:toolkit:[gstd] 0:00:03.154174272 8935 0x7f54003d40 DEBUG emcustom gstemcustom.c:309:gst_emcustom_get_property:<emcustom> get_property
INFO:toolkit:[gstd] 0:00:03.270246624 8935 0x558f32ea30 ERROR emcustom gstemcustom.c:376:gst_emcustom_start:<emcustom> Fail to load custom library
INFO:toolkit:[gstd] 0:00:03.270750816 8935 0x558f32ea30 ERROR gstdstate gstd_state.c:241:gstd_state_update:<GstdState@0x7f48366030> Failed to change the state of the pipeline
INFO:toolkit:[gstd]
DEBUG:toolkit:wating for the pipeline to start...
DEBUG:toolkit:wating for the pipeline to start...
DEBUG:toolkit:wating for the pipeline to start...

ts...@edgematrix.com

unread,
Dec 25, 2023, 4:18:22 AM12/25/23
to EDGEMATRIX Stream Toolkit Forum, w. ito
お世話になっております。

Fail to load custom library

上記のエラーが出ていますので、ユーザー定義のカスタムライブラリのロードに失敗しています。
emcustom単体のテストとしては、以下のやり方で、デバッグの出力を上げて確認します。

もし、外部ライブラリを参照している場合は、LD_LIBRARY_PATHに外部ライブラリを追加の上、
ライブラリの参照エラーを確認するために「LD_DEBUG=all」も追加して実行してください。

2023年12月25日月曜日 16:54:57 UTC+9 w. ito:

w. ito

unread,
Dec 25, 2023, 11:19:33 PM12/25/23
to EDGEMATRIX Stream Toolkit Forum, ts...@edgematrix.com, w. ito
お世話になっております。

返答いただきありがとうございます。
共有いただいた方法でデバッグを行ってみます。
> もし、外部ライブラリを参照している場合は、LD_LIBRARY_PATHに外部ライブラリを追加の上、
> ライブラリの参照エラーを確認するために「LD_DEBUG=all」も追加して実行してください。
こちらはToolkitBoxの環境変数に「LD_LIBRARY_PATH」と「LD_DEBUG=all」を必要に応じて追加するという理解でよろしいでしょうか。

2023年12月25日月曜日 18:18:22 UTC+9 ts...@edgematrix.com:

w. ito

unread,
Dec 26, 2023, 3:36:40 AM12/26/23
to EDGEMATRIX Stream Toolkit Forum, w. ito, ts...@edgematrix.com
五月雨で申し訳ありません。

弊社で作成しているアプリではカスタムライブラリ内で別ライブラリを参照しています。
チュートリアルに従ってemi_stream_config.jsonでは以下のように記述しているのですが(ファイル名はダミーです)
"emcustom": { "custom-lib": "models/Example/libexample.so", "libraries": ["models/Example/libfamous.so"] "in-place": "true", "format": "RGBA", "process-interval": 10 }共有いただいた以下コマンドでこの "libraries": ["models/Example/libfamous.so"]部分はどのように指定すればよろしいでしょうか。
GST_DEBUG=*emcustom*:6 gst-launch-1.0 uridecodebin3 uri="file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4" ! queue ! nvstreammux0.sink_0 nvstreammux name=nvstreammux0 batch-size=1 batched-push-timeout=40000 width=1280 height=720 live-source=TRUE ! queue ! nvvideoconvert ! queue ! nvinfer config-file-path="/opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_infer_primary_nano.txt" ! queue ! nvvidconv ! emcustom name=emcustom custom-lib=/mnt/nvme/toolkit_home/libs/gst-emcustom/build/examples/libpassthrough.so silent=false ! fakesink
以上、お手数おかけしますがご確認のほどよろしくお願いいたします。
2023年12月26日火曜日 13:19:33 UTC+9 w. ito:

ts...@edgematrix.com

unread,
Dec 27, 2023, 2:29:32 AM12/27/23
to EDGEMATRIX Stream Toolkit Forum, w. ito, ts...@edgematrix.com
お世話になっております。

> 共有いただいた以下コマンドでこの "libraries": ["models/Example/libfamous.so"]部分はどのように指定すればよろしいでしょうか。

Linuxシェルの環境変数ですので、exportするか、以下のように直接実行時に指定してください。

$ LD_LIBRARY_PATH=PATH_TO_YOUR_LIB_FOLDER:$LD_LIBRARY_PATH LD_DEBUG=all GST_DEBUG=*emcustom*:6 gst-launch-1.0 ...

PATH_TO_YOUR_LIB_FOLDERは、libfamous.soが保存されているフォルダです。

librariesは、サービスボックスの場合、エージェントがLD_LIBRARY_PATHに登録されている/tmp/libにファイルのリンクを作成することで機能が実現されています。単体試験やCLIの試験ではエージェントがいませんので、直接指定する必要があります。

2023年12月26日火曜日 17:36:40 UTC+9 w. ito:

w. ito

unread,
Jan 9, 2024, 4:24:21 AM1/9/24
to EDGEMATRIX Stream Toolkit Forum, ts...@edgematrix.com, w. ito
お世話になっております。
本年もよろしくお願いいたします。

環境変数に設定するとのこと、承知いたしました。
環境変数に設定後、コマンドを実行しましたが、emcustom内でeventsの内容によって処理分岐をさせており
eventsがnullのため思うような結果を得られませんでした。
何度もお聞きして恐縮ですが、emcustomのprocess_ip関数に渡すeventsの内容は以下コマンドですとどこで定義しているのでしょうか。
config-file-pathのような設定ファイルなどを参照させるオプションがあるのでしょうか。
GST_DEBUG=*emcustom*:6 gst-launch-1.0 uridecodebin3 uri="file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4" ! queue ! nvstreammux0.sink_0 nvstreammux name=nvstreammux0 batch-size=1 batched-push-timeout=40000 width=1280 height=720 live-source=TRUE ! queue ! nvvideoconvert ! queue ! nvinfer config-file-path="/opt/nvidia/deepstream/deepstream/samples/configs/deepstream-app/config_infer_primary_nano.txt" ! queue ! nvvidconv ! emcustom name=emcustom custom-lib=/mnt/nvme/toolkit_home/libs/gst-emcustom/build/examples/libpassthrough.so silent=false ! fakesink

お手数ですがご確認のほどよろしくお願いいたします。

2023年12月27日水曜日 16:29:32 UTC+9 ts...@edgematrix.com:

Takenori Sato

unread,
Jan 9, 2024, 8:21:51 PM1/9/24
to w. ito, EDGEMATRIX Stream Toolkit Forum
伊藤様、本年もよろしくお願いいたします。

> emcustom内でeventsの内容によって処理分岐をさせており

eventsというのは、callbackとemcustomが変数を共有するための仕組みですが、
推論結果を含むNvDsBatchMetaであれば、bufferに入ってきますので、bufferの意味でしょうか?

それでしたら、期待した推論結果が流れるようにすれば良いです。

もしくは、emcustom単体ではなくなりますが、CLIで動かしてみてはいかがでしょうか。

2024年1月9日(火) 18:24 w. ito <wataru3...@gmail.com>:

w. ito

unread,
Jan 15, 2024, 11:50:25 PM1/15/24
to EDGEMATRIX Stream Toolkit Forum, Takenori Sato, EDGEMATRIX Stream Toolkit Forum, w. ito
お世話になっております。

返答遅くなり申し訳ありません。
callbackとemcustom間で使うeventsで合っています。
stream_configration.jsonの設定値をemcustomでも使用したく、callbackからemcustomへ情報を連携する作りとしています。
process_ip関数内のeventsがnullの場合returnする分岐処理部分をコメントアウトしたsoファイルを使用することで、
共有いただいた

$ LD_LIBRARY_PATH=PATH_TO_YOUR_LIB_FOLDER:$LD_LIBRARY_PATH LD_DEBUG=all GST_DEBUG=*emcustom*:6 gst-launch-1.0 ...
コマンドが動作することは確認できたのでカスタムライブラリに問題はないのかと考えています。
ですが、コメントアウト前のsoファイルを使用してアプリをtoolkitで実行しようとすると
Fail to load custom libraryエラーが発生します。

この後のデバッグとしてはどのような方法がありますでしょうか。
それかお手数ですが、作成したアプリとstream_configuration.jsonを送付しますので
EDGEMATRIX様の方で解析いただくことなどは可能でしょうか。
2024年1月10日水曜日 10:21:51 UTC+9 Takenori Sato:

ts...@edgematrix.com

unread,
Jan 28, 2024, 7:06:29 PM1/28/24
to EDGEMATRIX Stream Toolkit Forum
> ですが、コメントアウト前のsoファイルを使用してアプリをtoolkitで実行しようとすると
> Fail to load custom libraryエラーが発生します。

カスタム処理の部分でライブラリが見つからないので、想定通りです。
それを「LD_DEBUG=all」をつけて実行することにより、何が見つからないのかが出力されているはずですが、
確認されましたか?

2024年1月16日火曜日 13:50:25 UTC+9 w. ito:
Reply all
Reply to author
Forward
0 new messages