I am trying to deploy a Deepstream Python application with AWS Greengrass. My app is largely based off of deepstream-test-3, however I am getting the following error when the component recipe is run during deployment:
Error: gst-core-error-quark: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure. (4): gstbasesink.c(5367): gst_base_sink_change_state (): /GstPipeline:pipeline0/GstNv3dSink:sink:.
This error does not occur when the same command is run from a terminal on the Jetson device. I have tried adding the env variable “export DISPLAY=:1” to the component recipe as the same error occurs when run over SSH, however this produced a new error:
nvbufsurftransform: Could not get EGL display connection
The only way I could resolve this error was to change nv3dsink to fakesink, after this the application runs correctly when deployed from AWS Greengrass, however this removes the on screen display.
Is there a way to deploy a Deepstream Python app with greengrass while keeping the OSD?
My greengrass recipe below:
Manifests:
- Platform:
os: “linux”
Name: “Linux”
Lifecycle:
Run:
Script: “#!/bin/bash\ncd {artifacts:decompressedPath}/nvds-aws-gg\npython3 deepstream_app.py
\ -g nvinferserver -c config_infer_primary_rtdetr_triton.yml -i file://$(pwd)/example.mp4
\ –silent”
RequiresPrivilege: true
Artifacts:- Uri: “s3://path/nvds-aws-gg.zip”
Digest: “gH6RypBfn4ytJDfFi6rMiMcn2uX+zlI4DMdCshGEpuo=”
Algorithm: “SHA-256”
Unarchive: “ZIP”
Permission:
Read: “ALL”
Execute: “ALL”
Lifecycle: {}
- Uri: “s3://path/nvds-aws-gg.zip”
• Hardware Platform (Jetson / GPU)
Jetson Xavier AGX
• DeepStream Version
6.3
• JetPack Version (valid for Jetson only)
5.1.4
• TensorRT Version