How to make Xaiver stream camera feed to vlc through network

This is my camera board:
https://www.e-consystems.com/nvidia-cameras/jetson-agx-xavier-cameras/four-synchronized-4k-cameras.asp#key-features

So I can stream using:

CLIENT_IP=<IP_ADDRESS>
gst-launch-1.0 -e nvarguscamerasrc ! ‘video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1’
! nvvidconv ! ‘video/x-raw(memory:NVMM), format=(string)I420’ ! omxh264enc control-rate=2 bitrate=4000000 ! ‘video/x-h264, stream-format=(string)byte-stream’
! h264parse ! rtph264pay mtu=1400 ! udpsink host=$CLIENT_IP port=5000 sync=false async=false

I can get the video feed with this command:
gst-launch-1.0 udpsrc port=5000 ! application/x-rtp,encoding-name=H264,payload=96 ! rtph264depay ! h264parse ! queue ! avdec_h264 ! xvimagesink sync=false async=false -e

I want to know how can I get the video feed from VLC. Say with the command udp://:
I tried the vlc command and it doesn’t find anything. Could anyone give me some insights?

Hi,
Not sure but it seems not supported. Here is a relevant post.

You may try rtsp.
https://devtalk.nvidia.com/default/topic/1018689/jetson-tx2/vlc-playing-gstreamer-flow/post/5187270/#5187270

Hey Dane, thanks for getting back to me. The post was helpful.

I used this command in the end and VLC worked with rtsp:

./test-launch “nvarguscamerasrc sensor-id=0 ! video/x-raw(memory:NVMM),width=(int)340,height=(int)280,format=(string)NV12,framerate=20/1 ! nvvidconv ! omxh265enc bitrate=500000 SliceIntraRefreshEnable=true ! rtph265pay name=pay0 pt=96”

However I don’t quite understand why there is a ~0.5 second lag as compared to the gst-launch command even though I am streaming through my local network and there is little network latency. Perhaps the the udpsink just makes it faster? How could I reduce the lag?

Also below is the output after running the ./test-launch command:

Framerate set to : 20 at NvxVideoEncoderSetParameterNvMMLiteOpen : Block : BlockType = 8 
===== NVMEDIA: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 8 
NVMEDIA: H265 : Profile : 1 
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected...
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 1920 x 1080 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 31.622776; Exposure Range min 450000, max 400000000;

GST_ARGUS: 1920 x 1080 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 31.622776; Exposure Range min 450000, max 400000000;

GST_ARGUS: 1920 x 1080 FR = 120.000005 fps Duration = 8333333 ; Analog Gain range min 1.000000, max 31.622776; Exposure Range min 450000, max 400000000;

GST_ARGUS: 1280 x 720 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 31.622776; Exposure Range min 450000, max 400000000;

GST_ARGUS: 1280 x 720 FR = 120.000005 fps Duration = 8333333 ; Analog Gain range min 1.000000, max 31.622776; Exposure Range min 450000, max 400000000;

GST_ARGUS: Running with following settings:
   Camera index = 0 
   Camera mode  = 4 
   Output Stream W = 1280 H = 720 
   seconds to Run    = 0 
   Frame Rate = 120.000005 
GST_ARGUS: PowerService: requested_clock_Hz=833000
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.

Thanks

Hi,
We can configure ‘latency’ if you use rtspsrc. You may refer to this post.

Not sure but there might be similar control for VLC. Other users can share their experiences.