GstRtpH265Depay NAL Unit Type Error

Please provide complete information as applicable to your setup.

• Hardware Platform (Jetson / GPU) jetson
• DeepStream Version 7.0
• JetPack Version (valid for Jetson only) 6.0
• TensorRT Version 8.6.2.3
• Issue Type( questions, new requirements, bugs) questions
While running a GStreamer pipeline to process an H265 stream, I am receiving an error related to the GstRtpH265Depay element. The specific error message is as follows:

GstRtpH265Depay:depay: NAL unit type 50 not supported yet
  • The pipeline I am using is as follows:
GST_DEBUG=*FACTORY*:4 gst-launch-1.0 nvurisrcbin uri=rtsp://admin:123456@192.168.11.98:554/h265/ch1/main/av_stream ! nvv4l2h264enc ! h264parse ! flvmux ! rtmpsink location=rtmp://192.168.40.11:1935/live/1v999
  • Question:

  • Is the NAL unit type 50 unsupported in the current version of GStreamer I am using?

  • If so, are there any workarounds or alternative methods to process this stream?

  • If not, could there be a misconfiguration in my pipeline that is causing this issue?

DeepStream uses some opensource Gstreamer plugin. this error is from Gstreamer code, which means rtph265depay can’t support the stream. please refer to this topic.

he discussion topic indicates that resolving the error is not achieved by simply changing the decoder. Are there any solutions at the code level, apart from adjusting the camera’s settings? For instance, is it possible to employ an alternative decoder, or to insert a probe within the rtph265depay element to bypass certain NAL unit types? I am uncertain about the feasibility of such an approach. Currently, I am not aware of the instance when the rtph265depay is instantiated, nor do I know exactly where the probe should be inserted.

Could such a method be viable? I am not sure if this is a practical solution, as I do not have information on when the rtph265depay element is created during the pipeline, and I am uncertain about the precise location where the probe should be added.

there is no better solution because rtph265depay can’t be bypassed or replaced to decoder h265 rtp data.

Thank you very much. This issue only arises when handling multiple camera RTSP streams simultaneously, and it occurs after the system has been running for a while. The error message states “NAL unit type 50 not supported yet.” Currently, I am considering a method that involves adding a probe to the rtph265depay element to capture the buffer and skip the unit type 50. However, I am unsure about where in the Python code to access the rtph265depay element. Can you advise if this approach is feasible?

if testing each RTSP source, will this “NAL unit type 50 not supported yet” error persist?
2. nvurisrcbin is a gtreamer bin, rtph265depay is a sub-element of nvurisrcbin. please refer to this code for how to find sub-element.

If the resolution of the stream input is reduced, this issue does not occur. However, during the operation, the following error occurs: Failed to connect. (Timeout while waiting for server response) at …/gst/rtsp/gstrtspsrc.c(8130): gst_rtspsrc_retrieve_sdp() in the pipeline /GstPipeline:vehicle-congestion-pipeline/GstBin:source-bin-04/GstDsNvUriSrcBin:uri-decode-bin/GstRTSPSrc:src.

rtspsrc plugin s Gstreamer opensource plugin. the error “Failed to connect.” is from this code, which means the client did not get any response from the server.

But I have set the nvurisrcbin element with uri_decode_bin.set_property("rtsp-reconnect-interval", 60). Doesn’t this automatically reconnect every 60 seconds? Previously, for the same error, the program would automatically reconnect until the resource was successfully acquired.

yes, when starting RTSP reconnection, "Resetting source " will be printed.

Does rtsp-reconnect-attempts= -1 represent an infinite number of reconnection attempts?

yes. the default value is “infinite attempt”.

I am unable to obtain the creation of the rtph265depay element in the decodebin_child_added function. By using GST_DEBUG=*FACTORY*:7 gst-launch-1.0 nvurisrcbin uri=rtsp://admin:123456@192.168.11.98:554/h265/ch1/main/av_stream ! nvv4l2h264enc ! h264parse ! flvmux ! rtmpsink location=rtmp://192.168.40.11:1935/live/1v999, I observed that the creation of rtph265depay occurs after the pipeline is set to PLAYING. Is this due to an error in my code or some other reason that I am unable to capture the pad creation of the rtph265depay element?

Here is the code:

def decodebin_child_added(child_proxy, Object, name, user_data):
    log.info("Decodebin child added:{}", name)
    if name.find("decodebin") != -1:
        Object.connect("child-added", decodebin_child_added, user_data)
    if "rtph265depay" in name:
        log.info("rtph265depay")
        rtph265depay = child_proxy.get_by_name("rtph265depay")
        rtph265depay_pad = rtph265depay.get_static_pad("src")
        if rtph265depay_pad:
            rtph265depay_pad.add_probe(Gst.PadProbeType.BUFFER, nal_filter_probe, 0)

Here is the log using GST_DEBUG=*FACTORY*:7:

 GST_DEBUG=*FACTORY*:7  gst-launch-1.0 nvurisrcbin uri=rtsp://admin:123456@192.168.11.98:554/h265/ch1/main/av_stream ! nvv4l2h264enc ! h264parse ! flvmux ! rtmpsink location=rtmp://192.168.40.11:1935/live/1v999
0:00:00.001272013 158181 0xaaaaffe800d0 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:240:gst_element_register:<bin> Created new elementfactory for type GstBin
0:00:00.001361045 158181 0xaaaaffe800d0 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:240:gst_element_register:<pipeline> Created new elementfactory for type GstPipeline
0:00:00.001021527 158182 0xaaab0e7518d0 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:240:gst_element_register:<bin> Created new elementfactory for type GstBin
0:00:00.001104158 158182 0xaaab0e7518d0 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:240:gst_element_register:<pipeline> Created new elementfactory for type GstPipeline
0:00:00.070962244 158181 0xaaaaffe800d0 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:682:gst_element_factory_make_with_properties: gstelementfactory: make "nvurisrcbin"
0:00:00.310040485 158181 0xaaaaffe800d0 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:682:gst_element_factory_make_with_properties: gstelementfactory: make "nvv4l2h264enc"
0:00:00.330306204 158181 0xaaaaffe800d0 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:682:gst_element_factory_make_with_properties: gstelementfactory: make "h264parse"
0:00:00.331613579 158181 0xaaaaffe800d0 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:682:gst_element_factory_make_with_properties: gstelementfactory: make "flvmux"
0:00:00.332988544 158181 0xaaaaffe800d0 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:682:gst_element_factory_make_with_properties: gstelementfactory: make "rtmpsink"
0:00:00.334076156 158181 0xaaaaffe800d0 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:682:gst_element_factory_make_with_properties: gstelementfactory: make "pipeline"
Setting pipeline to PAUSED ...
Opening in BLOCKING MODE 
0:00:00.401905877 158181 0xaaaaffe800d0 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:736:gst_element_factory_make_valist: gstelementfactory: make "rtspsrc"
0:00:00.405065729 158181 0xaaaaffe800d0 INFO     GST_ELEMENT_FACTORY gstelementfactory.c:489:gst_element_factory_create_with_properties: creating element "rtspwms"
0:00:00.405871717 158181 0xaaaaffe800d0 INFO     GST_ELEMENT_FACTORY gstelementfactory.c:489:gst_element_factory_create_with_properties: creating element "rtspreal"
Pipeline is live and does not need PREROLL ...
Progress: (open) Opening Stream
Pipeline is PREROLLED ...
Prerolled, waiting for progress to finish...
Progress: (connect) Connecting to rtsp://admin:yw123456@192.168.11.98:554/h265/ch1/main/av_stream
Progress: (open) Retrieving server options
Progress: (open) Retrieving media info

0:00:00.431144869 158181 0xaaab0087ac00 INFO     GST_ELEMENT_FACTORY gstelementfactory.c:489:gst_element_factory_create_with_properties: creating element "udpsrc"
Progress: (request) SETUP stream 0
0:00:00.438378858 158181 0xaaab0087ac00 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:736:gst_element_factory_make_valist: gstelementfactory: make "rtpbin"
0:00:00.440108893 158181 0xaaab0087ac00 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:682:gst_element_factory_make_with_properties: gstelementfactory: make "rtpsession"
0:00:00.440378420 158181 0xaaab0087ac00 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:682:gst_element_factory_make_with_properties: gstelementfactory: make "rtpssrcdemux"
0:00:00.440488925 158181 0xaaab0087ac00 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:682:gst_element_factory_make_with_properties: gstelementfactory: make "rtpstorage"
0:00:00.443588068 158181 0xaaab0087ac00 INFO     GST_ELEMENT_FACTORY gstelementfactory.c:489:gst_element_factory_create_with_properties: creating element "udpsink"
0:00:00.443890654 158181 0xaaab0087ac00 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:682:gst_element_factory_make_with_properties: gstelementfactory: make "fakesrc"
0:00:00.445091683 158181 0xaaab0087ac00 INFO     GST_ELEMENT_FACTORY gstelementfactory.c:489:gst_element_factory_create_with_properties: creating element "udpsink"
0:00:00.445447042 158181 0xaaab0087ac00 INFO     GST_ELEMENT_FACTORY gstelementfactory.c:489:gst_element_factory_create_with_properties: creating element "udpsrc"
Progress: (request) SETUP stream 1
0:00:00.456048229 158181 0xaaab0087ac00 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:682:gst_element_factory_make_with_properties: gstelementfactory: make "rtpsession"
0:00:00.456175247 158181 0xaaab0087ac00 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:682:gst_element_factory_make_with_properties: gstelementfactory: make "rtpssrcdemux"
0:00:00.456239573 158181 0xaaab0087ac00 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:682:gst_element_factory_make_with_properties: gstelementfactory: make "rtpstorage"
0:00:00.456978324 158181 0xaaab0087ac00 INFO     GST_ELEMENT_FACTORY gstelementfactory.c:489:gst_element_factory_create_with_properties: creating element "udpsink"
0:00:00.457145026 158181 0xaaab0087ac00 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:682:gst_element_factory_make_with_properties: gstelementfactory: make "fakesrc"
0:00:00.457513665 158181 0xaaab0087ac00 INFO     GST_ELEMENT_FACTORY gstelementfactory.c:489:gst_element_factory_create_with_properties: creating element "udpsink"
Progress: (open) Opened Stream
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
Progress: (request) Sending PLAY request
Redistribute latency...
Redistribute latency...
Progress: (request) Sending PLAY request
Redistribute latency...
Redistribute latency...
Progress: (request) Sent PLAY request
0:00:00.572301225 158181 0xffff2c006ea0 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:682:gst_element_factory_make_with_properties: gstelementfactory: make "rtpjitterbuffer"
0:00:00.573535761 158181 0xffff2c006ea0 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:682:gst_element_factory_make_with_properties: gstelementfactory: make "rtpptdemux"
Redistribute latency...
0:00:00.574694259 158181 0xffff0401b000 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:736:gst_element_factory_make_valist: gstelementfactory: make "rtph265depay"
0:00:00.574880195 158181 0xffff0401b000 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:736:gst_element_factory_make_valist: gstelementfactory: make "h265parse"
0:00:00.575498808 158181 0xffff0401b000 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:736:gst_element_factory_make_valist: gstelementfactory: make "tee"
0:00:00.575660069 158181 0xffff0401b000 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:736:gst_element_factory_make_valist: gstelementfactory: make "tee"
0:00:00.575709546 158181 0xffff0401b000 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:736:gst_element_factory_make_valist: gstelementfactory: make "queue"
0:00:00.575906842 158181 0xffff0401b000 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:736:gst_element_factory_make_valist: gstelementfactory: make "decodebin"
0:00:00.577349109 158181 0xffff0401b000 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:736:gst_element_factory_make_valist: gstelementfactory: make "typefind"
0:00:00.577547813 158181 0xffff0401b000 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:736:gst_element_factory_make_valist: gstelementfactory: make "queue"
0:00:00.577610315 158181 0xffff0401b000 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:736:gst_element_factory_make_valist: gstelementfactory: make "nvvideoconvert"
0:00:00.578294981 158181 0xffff0401b000 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:736:gst_element_factory_make_valist: gstelementfactory: make "capsfilter"
0:00:00.581613534 158181 0xffff0401bb60 DEBUG    GST_ELEMENT_FACTORY gstelementfactory.c:1192:gst_element_factory_list_filter: finding factories
0:00:00.590805994 158181 0xffff2c06a400 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:682:gst_element_factory_make_with_properties: gstelementfactory: make "rtpjitterbuffer"
0:00:00.591673748 158181 0xffff2c06a400 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:682:gst_element_factory_make_with_properties: gstelementfactory: make "rtpptdemux"
Redistribute latency...
0:00:00.593361923 158181 0xffff0401bb60 LOG      GST_ELEMENT_FACTORY gstelementfactory.c:682:gst_element_factory_make_with_properties: gstelementfactory: make "capsfilter"
0:00:00.600318641 158181 0xffff0401bb60 INFO     GST_ELEMENT_FACTORY gstelementfactory.c:489:gst_element_factory_create_with_properties: creating element "nvv4l2decoder"
Redistribute latency...

rtph265depay is sub-element of nvurisrcbin, but not sub-element of decodebin. you can dump the pipeline graph to check according to this faq.

This is to obtain the rtph265depay element within the creation of the nvurisrcbin element. Below is my pipeline structure diagram.

Notcing you added " log.info(“Decodebin child added:{}”, name)", did the app print “Decodebin child added: rtph265depay”? is the video format of source H264? you can use ffprobe or gst-discoverer-1.0 -v rtsp://xx to check.

It did not print “Decodebin child added: rtph265depay”。 that this video is H265.

Analyzing rtsp://admin:123456@192.168.11.98:554/h265/ch1/sub/av_stream
Opening in BLOCKING MODE 
NvMMLiteOpen : Block : BlockType = 279 
NvMMLiteBlockCreate : Block : BlockType = 279 
Done discovering rtsp://admin:123456@192.168.11.98:554/h265/ch1/sub/av_stream

Properties:
  Duration: 99:99:99.999999999
  Seekable: no
  Live: yes
  container #0: application/rtsp
    unknown #2: application/x-rtp
      audio #1: A-Law
        Stream ID: 9a1d5617c48d977d759962e8abbf6ac8619a50fb7b7fa883e86f09c538e086ee/audio:0:0:RTP:AVP:8
        Language: <unknown>
        Channels: 1 (unknown layout)
        Sample rate: 8000
        Depth: 16
        Bitrate: 0
        Max bitrate: 0
    unknown #4: application/x-rtp
      video #3: H.265 (Main Profile)
        Stream ID: 9a1d5617c48d977d759962e8abbf6ac8619a50fb7b7fa883e86f09c538e086ee/video:0:0:RTP:AVP:96
        Width: 640
        Height: 360
        Depth: 24
        Frame rate: 25/1
        Pixel aspect ratio: 1/1
        Interlaced: false
        Bitrate: 0
        Max bitrate: 0

can you share what did it print? all sub-element name should be printed.

2024-09-02 17:12:22.367 | INFO     | utils.utils:decodebin_child_added:255 - Decodebin child added:h265parse0
2024-09-02 17:12:22.372 | INFO     | utils.utils:decodebin_child_added:255 - Decodebin child added:capsfilter0
2024-09-02 17:12:22.383 | INFO     | utils.utils:decodebin_child_added:255 - Decodebin child added:nvv4l2decoder0
2024-09-02 17:12:25.404 | INFO     | utils.utils:decodebin_child_added:255 - Decodebin child added:depay
2024-09-02 17:12:25.405 | INFO     | utils.utils:decodebin_child_added:255 - Decodebin child added:parser
2024-09-02 17:12:25.406 | INFO     | utils.utils:decodebin_child_added:255 - Decodebin child added:tee_rtsp_pre_decode
2024-09-02 17:12:25.407 | INFO     | utils.utils:decodebin_child_added:255 - Decodebin child added:dec_que
2024-09-02 17:12:25.407 | INFO     | utils.utils:decodebin_child_added:255 - Decodebin child added:tee_rtsp_post_decode
2024-09-02 17:12:25.407 | INFO     | utils.utils:decodebin_child_added:255 - Decodebin child added:decodebin
2024-09-02 17:12:25.407 | INFO     | utils.utils:decodebin_child_added:255 - Decodebin child added:queue
2024-09-02 17:12:25.407 | INFO     | utils.utils:decodebin_child_added:255 - Decodebin child added:nvvidconv
2024-09-02 17:12:25.408 | INFO     | utils.utils:decodebin_child_added:255 - Decodebin child added:src_cap_filter_nvvidconv

please connect decodebin_child_added to nvurisrcbin. AYK, rtph265depay is not a sub-element of Decodebin. it is a sub-element of nvurisrcbin.