Gstreamer pylonsrc pipeline works reliably on laptop but not on Jetson

I installed basler/gst-plugin-pylon and connected a Basler Pylon USB3 camera. I am able to run the below pipeline on my laptop and receive the UDP stream on another device :
gst-launch-1.0 pylonsrc ! video/x-raw, width=1280, height=1080, framerate=30/1 ! videoconvert ! x264enc ! rtph264pay mtu=1400 ! udpsink host=CLIENT_IP port=8080 sync=false

However, when I try the above command on the Jetson Xavier, it throws an error:

** (gst-launch-1.0:10030): CRITICAL **: CLIENT_IP gst_pylon_src_add_metadata: assertion 'buf' failed
ERROR: from element /GstPipeline:pipeline0/GstPylonSrc: pylonsrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2695): gst_base_src_get_range (): /GstPipeline0/GstPylonSrc:pylonsrc0:
Subclass GstPylonSrc neither returned a buffer nor submitted a buffer list from its create function
Execution ended after 0:00:02.450679560
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...

Why is this command so reliable on my laptop and so unreliable on the Jetson Xavier? The exact same install packages and dependencies are installed on both. Happy to answer any clarifying questions if my explanation was poor. Thank you!

Hi,
Probably it needs to install additional driver. Please try the simple command and check if it helps:

$ gst-launch-1.0 pylonsrc ! video/x-raw, width=1280, height=1080, framerate=30/1 ! fakesink

If it runs fine, please then try:

$ gst-launch-1.0 pylonsrc ! video/x-raw, width=1280, height=1080, framerate=30/1 ! videoconvert ! fakesink

To find out which plugin is added and triggers error.

Hi, I tried both of those options and they work great. When I try my original command however, I get a “Failed to create buffer” error and an “Internal data stream” error.

Hi
Please add encoder and check if it works:

gst-launch-1.0 pylonsrc ! video/x-raw, width=1280, height=1080, framerate=30/1 ! videoconvert ! video/x-raw,format=I420 ! x264enc ! fakesink

Hi, I entered the command and got this as a response:

# gst-launch-1.0 pylonsrc ! video/x-raw, width=1280, height=1080, framerate=30/1 ! videoconvert ! video/x-raw,format=I420 ! x264enc ! fakesink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
ERROR: from element /GstPipeline:pipeline0/GstPylonSrc:pylonsrc0: Failed to create buffer.
Additional debug info:
../ext/pylon/gstpylonsrc.c(797): gst_pylon_src_create (): /GstPipeline:pipeline0/GstPylonSrc:pylonsrc0:
Payload data has been discarded. Payload data can be discarded by the camera device if the available bandwidth is insufficient.
ERROR: from element /GstPipeline:pipeline0/GstPylonSrc:pylonsrc0: Internal data stream error.
Additional debug info:
../libs/gst/base/gstbasesrc.c(3127): gst_base_src_loop (): /GstPipeline:pipeline0/GstPylonSrc:pylonsrc0:
streaming stopped, reason error (-5)
Execution ended after 0:00:02.916512727
Setting pipeline to NULL ...
Freeing pipeline ...

Hi,

I got the pipeline working by adding speed-preset=1 to the x264enc line!

Hi,
Then please try

gst-launch-1.0 pylonsrc ! video/x-raw, width=1280, height=1080, framerate=30/1 ! videoconvert ! video/x-raw,format=I420 ! x264enc speed-preset=1 ! rtph264pay mtu=1400 ! udpsink host=(user IP) port=8080 sync=false

See if it works by adding speed-preset=1

It works!!! Thank you

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