Muxer could not multiplex stream - Buffer has no PTS

Please provide complete information as applicable to your setup.

• Hardware Platform (Jetson / GPU): Jetson Orin NX
• DeepStream Version: 6.2
• JetPack Version (valid for Jetson only): 5.1.1
• TensorRT Version: 5.1.1-b56
• Issue Type (questions, new requirements, bugs): questions
• How to reproduce the issue? (This is for bugs. Including which sample app is using, the configuration files content, the command line used and other details for reproducing)

The diagram of the pipeline in use is as follows:

The program is run from a Python script within our internal library. We have tested the same program with multiple camera models via RTSP streams, the working camera models that could stably run for a long time without crashing are all from Amcrest (tested models include: NC224-XD/U, IP5M-T1277EW-AI, IP5M-T1179EB-28MM), the other camera models (e.g. Honeywell HBW2PER2, Starlight VD-2FR41-ZS, Valucam VC-EB4431R-Z) will run into the “Buffer has no PTS” error sooner or later in non-deterministic time ranging from several minutes to several hours. The complete error messages are as follows:

Error received from element muxer. Could not multiplex stream.: gstqtmux.c(4832): gst_qt_mux_add_buffer (): /GstPipeline:inference-server/GstSplitMuxSink:recorder_0_splitmuxsink_0/GstMP4Mux:muxer:
Buffer has no PTS.
Error from non-source element: muxer
Error received while waiting for EOS: Internal data stream error.. Debug: gstqueue.c(988): gst_queue_handle_sink_event (): /GstPipeline:inference-server/GstSplitMuxSink:recorder_0_splitmuxsink_0/GstQueue:queue0:
streaming stopped, reason error (-5)

Can I get support regarding the root cause of the issue (i.e. why does the Amcrest camera work but none of the others do)? And if the issue is camera model-related, is there a way to patch the pts timestamps inside the program to make those cameras also work? Thank you.

The pipeline you post here is a GStreamer pipeline. It has nothing to do with DeepStream or any other Nvidia component.

Please google by yourself or consult the GStreamer community. GStreamer: open source multimedia framework

I don’t understand. I have seen Gstreamer-related questions in the forum before, and “Buffer has no pts” issue is fundamentally reported from C script which is provided and supported by Deepstream, I wonder why is this issue considered not related? Is it that I should use a different tag or topic? Thank you.

This is not DeepStream related. Please consult the camera vendor.
There is no “C script”. The code you run with is provide by Installing on Linux (gstreamer.freedesktop.org)

The pipeline you post here is a GStreamer pipeline. It has nothing to do with DeepStream or any other Nvidia component.

Just to add more context on the topic for later reference, the same issue can be reproduced by running gst-launch command as follows:

gst-launch-1.0 -e rtspsrc location=rtsp://<user:pwd>@<URL>:<port> latency=3000 drop-on-latency=true ! rtph264depay ! h264parse disable-passthrough=true ! tee name=input1_tee allow-not-linked=true ! output-selector name=t t. ! taginject ! splitmuxsink location=test-%04d.mp4 max-size-time=900000000000 message-forward=true async-handling=true t. ! fakesink sync=true async=false enable-last-sample=false

The error message shows:

ERROR: from element /GstPipeline:pipeline0/GstSplitMuxSink:splitmuxsink0/GstMP4Mux:muxer: Could not multiplex stream.
Additional debug info:
gstqtmux.c(4832): gst_qt_mux_add_buffer (): /GstPipeline:pipeline0/GstSplitMuxSink:splitmuxsink0/GstMP4Mux:muxer:
Buffer has no PTS.

By adding probes to each element’s pads and printing out the PTS/DTS, it is found that the issue will occur when depay receives multiple buffers with the same PTS, then at the parser’s src pad, only the first buffer will include the PTS, the rest will have a PTS of Gst.CLOCK_TIME_NONE. The error can be bypassed by modifying the buffer without PTS to using PTS from depay’s src pad at parser’s src pad.

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