Could you elaborate more on your first point where you mentioned transfering videos without encoding and decoding? As I will be trying out 5G I believe that will be greatly beneficial!
How do I go about trying to edit the data transfer protocol?
It is not a network stream, only a camera>nano>HDMI-display transfer, see pictures.
On the copter I will use the Amimon Connex downlink with almost zero latency.
Thank you for the help but my project budget does not allow me to get a downlink.
My project is basically an autonomous drone where the jetson nano controls the autonomous flight as well as the streaming via cellular network(LTE/4G Modem) to a receiving end.
Our current latency using the codes provided above and running RTMP protocol are about 500ms. I am looking for ways to get it down to as low as 100ms or less if possible.
My current research has led me to believe gstreamer has the least latency live streaming wise.
EDIT: I am using an Raspberry Pi Camera Module V2 if it helps
Some wireless remote display protocol, such as miracast, can achieve sub 100ms latency easily. underlayer it is using H264/H265 RTSP/RTP as well. So I think if you are targeting around 100ms latency it is possible.
But how do I receive the latency information? I got this afterwards when I ran the code above :
Setting pipeline to PAUSED ...
Opening in BLOCKING MODE
gst_v4l2_video_enc_open: open trace file successfully
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
NvMMLiteOpen : Block : BlockType = 4
===== NVMEDIA: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 4
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected...
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 3264 x 2464 FR = 21.000000 fps Duration = 47619048 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
GST_ARGUS: 3264 x 1848 FR = 28.000001 fps Duration = 35714284 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
GST_ARGUS: 1920 x 1080 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
GST_ARGUS: 1280 x 720 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
GST_ARGUS: 1280 x 720 FR = 120.000005 fps Duration = 8333333 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;
GST_ARGUS: Running with following settings:
Camera index = 0
Camera mode = 0
Output Stream W = 3264 H = 2464
seconds to Run = 0
Frame Rate = 21.000000
GST_ARGUS: PowerService: requested_clock_Hz=37126320
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.
H264: Profile = 66, Level = 0
Also, to receive the RTSP stream, we’d need a RTSP server. How do you set up the RTSP server?
Ahh I got the measuring latency part using a digital stopwatch. I thought the MeasureEncoderLatency=1 would print out a digital latency test in the terminal hahah
Something to consider is that increased average throughput of 5G does not necessarily translate to reduced latency. As throughput goes up, then probably latency goes down, but anything wireless will add far more to latency than what you’d get with wired. Then there is the latency of the Nano itself. If you experiment with the wired gigabit network while the Nano is in performance mode, then you probably have the lowest latency possible. Everything else, especially wireless, will get significantly higher latency in comparison.
udpsink is the simplest form, there is no faster and simpler than it (less practical than rtsp). once you test your latency with it, you can test it with others to see where is your delay come from.
h265 is 50% more efficient in bandwidth than h264, it might not be faster ? you can try.
Hi @DaneLLL,
Why is 100ms latency may not be achieved on the Jetson Nano? I’ve been trying to get an RTP stream over udp from an IP camera and it seems like I’m stuck at around 200ms latency and couldn’t get it down an further.
Been trying to get around 150ms of delay from an RTP stream using gstreamer.