VLC can't play video stream from Orin AGX

Hi, I have created UDP video stream on Orin AGX. It can play with Gstreamer command but can not play with VLC. Anything I miss here?

Sender:
out_pipeline_str << "appsrc ! video/x-raw, format=(string)BGR ! "
"videoconvert ! video/x-raw, format=(string)I420 ! nvvidconv ! "
"video/x-raw(memory:NVMM), format=(string)NV12 ! nvv4l2h264enc insert-sps-pps=true insert-vui=true ! "
“h264parse ! rtph264pay pt=96 ! udpsink host=HOST_IP port=8001 auto-multicast=0”;

Receiver:
gst-launch-1.0 udpsrc port=8001 ! application/x-rtp,encoding-name=H264 ! rtph264depay ! h264parse ! nvv4l2decoder ! nvvidconv ! xvimagesink

VLC sdp:

c=IN IP4 ORIN_IP
m=video 8001 RTP/AVP 96
a=rtpmap:96 H264/90000

Hi,
A user has shared a method:
Gstreamer TCPserversink 2-3 seconds latency - #13 by Bazziil

Please take a look and give it a try.

1 Like

Thank you! It turned out that I picked a wrong port.

I changed to another port. Now I can use VLC to play on the same Orin device, but not on a ubuntu laptop.

When running vlc on Orin, I found that vlc is trying to open Nvidia library. Does this mean Nvidia library is needed to play UDP stream? If yes, which libraries are needed?

$ vlc -v vlc_test.sdp
VLC media player 3.0.9.2 Vetinari (revision 3.0.9.2-0-gd4c1aefe4d)
[0000aaaae266c5c0] main libvlc: Running vlc with the default interface. Use ‘cvlc’ to use vlc without interface.
[0000ffff48c19fc0] h264 packetizer warning: waiting for SPS/PPS
[0000ffff48c19fc0] h264 packetizer warning: waiting for SPS/PPS
[0000ffff48c19fc0] h264 packetizer warning: waiting for SPS/PPS
libva info: VA-API version 1.7.0
libva info: Trying to open /usr/lib/aarch64-linux-gnu/dri/nvidia_drv_video.so
libva info: va_openDriver() returns -1
[0000ffff340038b0] glconv_vaapi_x11 gl error: vaInitialize: unknown libva error
[0000ffff344ef620] vaapi_filters filter warning: Using SW chroma filter for 800x800 VAOP → I420
Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory
Failed to open VDPAU backend libvdpau_nvidia.so: cannot open shared object file: No such file or directory

Hi,
It is a solution for desktop GPU so the libs are not loaded on Jetson platforms. And then it falls back to software decoding.

got you! With sdp file, vlc can play UDP stream from a Windows system now. HOORAY!

At the end, we would like to play it with a in-house player, but this in-house player only accept regular URI. Is it possible to play UDP stream with regular URI (like udp://@PORT) instead of a sdp file?

SDP file is required for dynamic payload. You may use RTP/MP2T that uses a static payload (33) and can be used with H264 or H265.
Try as sender:

out_pipeline_str << "appsrc ! video/x-raw, format=(string)BGR ! "
"videoconvert ! video/x-raw, format=(string)BGRx ! nvvidconv ! "
"video/x-raw(memory:NVMM), format=(string)NV12 ! nvv4l2h264enc insert-sps-pps=true insert-vui=true idrinterval=15 ! "
"h264parse ! mpegtsmux ! rtpmp2tpay ! udpsink host=HOST_IP port=8001 auto-multicast=0";

You may find further details from this post:

It worked. Thank you so much!

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