Fakesink not working Deepstream Python SDK

• Hardware Platform: Jetson Nano
• DeepStream Version: 5.1
• JetPack Version: 4.5
• TensorRT Version: 7.1.3.0

Hello,

I am using deepstream_imagedata-multistream.py. I want to disable the display output and for that, I am using fakesink. but whenever I change it fakesink the code crashes. I have attached the log here.

Error: gst-stream-error-quark: Internal data stream error. (1): /dvs/git/dirty/git-master_linux/deepstream/sdk/src/gst-plugins/gst-nvinfer/gstnvinfer.cpp(1984): gst_nvinfer_output_loop (): /GstPipeline:pipeline0/GstNvInfer:primary-inference:
streaming stopped, reason error (-5)
Exiting app

Is there any other way to Disable the output display ?

Thank you
Viraj

The crash is caused by your change, so please show your change or check your change, we can not know what wrong just from the log.

In deepstream_imagedata-multistream.py, I have change this line

instead of this line
sink = Gst.ElementFactory.make(“nveglglessink”, “nvvideo-renderer”)

I have used this.
sink = Gst.ElementFactory.make(“fakesink”, “fakesink”)

You should remove nvegltransform too. nvegltransform can not be connected to fakesink.

2 Likes

I have commented the transform(nvegltransform) part in code. And now I am getting this Error.

Error: gst-stream-error-quark: Internal data stream error. (1): /dvs/git/dirty/git-master_linux/deepstream/sdk/src/gst-plugins/gst-nvinfer/gstnvinfer.cpp(1984): gst_nvinfer_output_loop (): /GstPipeline:pipeline0/GstNvInfer:primary-inference:
streaming stopped, reason not-linked (-1)
Exiting app

How did you do this?

I have commented

#transform = Gst.ElementFactory.make(“nvegltransform”, “nvegl-transform”)
then
#pipeline.add(transform)

and other parameter that uses transform.

Have you also changed :

    if is_aarch64():
        nvosd.link(transform)
        transform.link(sink)
    else:
        nvosd.link(sink)

to

  nvosd.link(sink)

???

1 Like

Yes, That Was My mistake.

I have just commented,
if is_aarch64():
#nvosd.link(transform)
#transform.link(sink)
else:
nvosd.link(sink)

now I have written something like

nvosd.link(sink)
#if is_aarch64():
#nvosd.link(transform)
#transform.link(sink)
#else:
#nvosd.link(sink)

Now It’s working without display.

Thank you

Are you working with video file? or rtsp?
I’m working on a similar problem using RSTP video. My code is based on deepstream_test_3.py, but included nvidconf and filter1 between pgie and queue2 in the original script to save frames as in deepstream_imagedata_multistream.py:

streamux → queue1 → pgie → nvidconf → filter1 → queue2 → … → sink

The solution is working perfectly (speed, detection, saving frames) except I don’t want it to display video on screen, just save detections.
I did the changes you suggest (fakesink) and get the following error:

Error: gst-stream-error-quark: Internal data stream error. (1): gstqueue.c(988): gst_queue_handle_sink_event (): /GstPipeline:pipeline0/GstQueue:queue2:
streaming stopped, reason error (-5)
Exiting app

I am working on both video and RTSP.

you did the following the changes right ?

  1. instead of nveglglessink, you have changed it to fakesink
  2. you have removed the nvegltransform.
  3. Instead this
  if is_aarch64():
        nvosd.link(transform)
        transform.link(sink)
  else:
        nvosd.link(sink))

you have to change to only this line.

nvosd.link(sink)

These steps worked for me.

This topic was automatically closed 60 days after the last reply. New replies are no longer allowed.