I’ve tried to set up one RTSP server to stream H265 video captured from a USB camera. I’ve tried the following Gstreamer pipelines:
./test-launch “(v4l2src ! video/x-raw, width=(int)1280, height=(int)720 ! nvvidconv ! video/x-raw, format=I420 ! x265enc ! video/x-h265, stream-format=(string)byte-stream ! h265parse ! rtph265pay name=pay0 pt=96 )”
./test-launch “(v4l2src ! video/x-raw, width=(int)1280, height=(int)720 ! nvvidconv ! video/x-raw(memory:NVMM), format=I420 ! nvv4l2h265enc ! video/x-h265, stream-format=(string)byte-stream ! h265parse ! rtph265pay name=pay0 pt=96 )”
And using the following pipeline on a PC to receive and display the H265 data:
gst-launch-1.0 rtspsrc latency=200 location=“rtsp://192.168.51.11:8554/test” ! rtph265depay ! h265parse ! nvh265dec ! autovideosink
These codes work well while using a Jetson Xavier NX or a Jetson AGX Orin as the RTSP server. However, when I switch to Orin Nano or use the AGX Orin to emulate Orin Nano, I got the following error on the client side:
C:\Users> gst-launch-1.0 rtspsrc latency=200 location=“rtsp://192.168.51.11:8554/test” ! rtph265depay ! h265parse ! nvh265dec ! autovideosink
(gst-launch-1.0:3800): GStreamer-WARNING **: 10:31:29.823: Failed to load plugin ‘E:\Library\GStreamer\1.0\msvc_x86_64\lib\gstreamer-1.0\gstassrender.dll’: The specified module could not be found.
This usually means Windows was unable to find a DLL dependency of the plugin. Please check that PATH is correct.
You can run ‘dumpbin -dependents’ (provided by the Visual Studio developer prompt) to list the DLL deps of any DLL.
There are also some third-party GUIs to list and debug DLL dependencies recursively.
Use Windows high-resolution clock, precision: 1 ms
Setting pipeline to PAUSED …
Pipeline is live and does not need PREROLL …
Got context from element ‘autovideosink0’: gst.d3d11.device.handle=context, device=(GstD3D11Device)“(GstD3D11Device)\ d3d11device3”, adapter=(uint)0, adapter-luid=(gint64)68929, device-id=(uint)9353, vendor-id=(uint)4318, hardware=(boolean)true, description=(string)“NVIDIA\ GeForce\ RTX\ 3060\ Ti”;
Got context from element ‘nvh265dec0’: gst.cuda.context=context, gst.cuda.context=(GstCudaContext)“(GstCudaContext)\ cudacontext1”, cuda-device-id=(uint)0;
Got context from element ‘nvh265dec0’: gst.gl.GLDisplay=context, gst.gl.GLDisplay=(GstGLDisplay)“(GstGLDisplay)\ gldisplay0”;
Progress: (open) Opening Stream
Pipeline is PREROLLED …
Prerolled, waiting for progress to finish…
Progress: (connect) Connecting to rtsp://192.168.51.11:8554/test
Progress: (open) Retrieving server options
Progress: (open) Retrieving media info
ERROR: from element /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0: Unhandled error
Additional debug info:
…/gst/rtsp/gstrtspsrc.c(6962): gst_rtspsrc_send (): /GstPipeline:pipeline0/GstRTSPSrc:rtspsrc0:
Service Unavailable (503)
ERROR: pipeline doesn’t want to preroll.
Setting pipeline to NULL …
Freeing pipeline …
Does Orin Nano still have some limitations on H265 video encoding and streaming based on GStreamer?
Orin Nano has been flashed with Jetpack 5.1.1 by using the SDKManager.