Dear Jetson GPU Experts,
I am currently investigating the encoding capacity of the Jetson Xavier NX as below:
In my test, there are 4 cameras connected to the Xavier NX:
a. Sony block camera 1080p30/1080p60 via MIPI-CSI2
b. Sony 8MP IMX477 or similar 1080p30/1080p60 via MIPI-CSI2
c. 2x webcam 640x480 via USB
When I streamed all of the cameras over the network, I observed that no GPU percentage used.
For a :
- Board :
gst-launch-1.0 v4l2src device = /dev/video1 ! nvvidconv ! nvv4l2h264enc insert-vui=true insert-sps-pps=1 idrinterval=15 maxperf-enable=true bitrate=4000000 ! video/x-h264, stream-format=byte-stream, alignment=au ! h264parse ! rtph264pay name=pay0 pt=96 ! udpsink host=$CLIENT_PC port=5001 sync=false async=false
- Laptop :
gst-launch-1.0 udpsrc port=5001 ! application/x-rtp,encoding-name=H264,payload=96 ! rtph264depay ! queue ! avdec_h264 ! xvimagesink sync=false async=false -e
For B :
- Board :
gst-launch-1.0 nvarguscamerasrc sensor-mode=2 ! 'video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1' ! nvv4l2h264enc insert-sps-pps=1 idrinterval=15 ! h264parse ! rtph264pay name=pay0 pt=96 ! queue ! udpsink host=$CLIENT_PC port=5002
- Laptop :
gst-launch-1.0 udpsrc port=5002 ! 'application/x-rtp,encoding-name=H264,payload=96' ! rtph264depay ! avdec_h264 ! xvimagesink sync=0
For c :
-
Board :
gst-launch-1.0 v4l2src device=/dev/video3 num-buffers=500 ! 'video/x-raw, width=640,height=480,framerate=(fraction)30/1' ! nvv4l2h264enc ! insert-sps-pps=1 idrinterval=15 ! h264parse ! rtph264pay name=pay0 pt=96 ! udpsink host=$CLIENT_PC port=5003 sync=false
-
Laptop :
gst-launch-1.0 udpsrc port=5003 ! application/x-rtp,encoding-name=H264,payload=96 ! rtph264depay ! queue ! avdec_h264 ! xvimagesink sync=false async=false -e
However, if I both streamed and visualized/previewed internally within the Jetson Xavier NX :
For a:
-
Terminal #1a :
gst-launch-1.0 v4l2src device = /dev/video1 ! nvvidconv ! nvv4l2h264enc insert-vui=true insert-sps-pps=1 idrinterval=15 maxperf-enable=true bitrate=8000000 ! video/x-h264, stream-format=byte-stream, alignment=au ! h264parse ! rtph264pay name=pay0 pt=96 ! udpsink host=127.0.0.1 port=5001 sync=false async=false
-
Terminal #1b :
gst-launch-1.0 udpsrc address=127.0.0.1 port=5001 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=H264,payload=96 ! rtph264depay ! nvv4l2decoder disable-dpb=true ! nv3dsink sync=false async=false window-width=960 window-height=540
For b :
-
Terminal #2a :
gst-launch-1.0 nvarguscamerasrc sensor-mode=0 ! 'video/x-raw(memory:NVMM), width=(int)3840, height=(int)2160, format=(string)NV12, framerate=(fraction)30/1' ! nvv4l2h264enc insert-sps-pps=1 idrinterval=15 ! h264parse ! rtph264pay name=pay0 pt=96 ! queue ! udpsink host=127.0.0.1 port=5002
-
Terminal #2b:
gst-launch-1.0 udpsrc address=127.0.0.1 port=5002 ! application/x-rtp,media=video,clock-rate=90000,encoding-name=H264,payload=96 ! rtph264depay ! nvv4l2decoder disable-dpb=true ! nv3dsink sync=false async=false window-width=960 window-height=540
I observed that there was GPU consumption :
Could you tell if the GPU consumption comes from the on-board H264 decoding or/and the on-board previewing /visualization, please ?
Best Regards,
Khang