DVR and interface in the cloud

I’m building a 4G drone that streams all data through and online server.

I’ve set up a host on Amazon (AWS) with a static IP and succesfully configured my Navio2 to send to the mavproxy server to intercept, log, and forward the telemetry data to mission planner.

I’ve also set up video streaming and recording through the server using the RTMP protocal and ffmpeg from the PI and NGINX on the server where I can connect from anywhere with VLC to view the stream.

The problem? Latency…
Gstreamer works great over the local network and its lightweight on the PI2 but I havent found a way to run a DVR and remote viewer through the server. (with all the codecs, pipes, and configs I get lost easily)
RTMP is over TCP so it’s terrible for the 4G connection from the PI. On my hotspot I’m getting sometimes more than 10 secs of video lag!

Ideally both video and telemetry comes from the Navio/PI is over UDP to the server where it is recorded and “converted” into a TCP connection where I can connect from any computer.

Do you know a better way of doing this?


A quick tip: VLC has very high buffering setting by default which results in 10s latency. Disabling it will lead to a great improvement. In general gstreamer will have lower latency but is more complicated to set up. Have you seen this tutorial?

Thanks for tip on VLC. I have seen that tutorial but it doesn’t quite cover the piece on the server.
I need to get gstreamer (or ffmpeg) set up on the server to receive and split the incoming UDP stream to:

  • Save the stream in common container (eg AVI)
  • Re-stream via TCP on a local port so I can connect as needed from VLC etc.

How did you configure the navio2 to send to the mavproxy server?

Hi @marwane.oukh,

To connect Navio2 with the MAVproxy ground control station, you need to specify the IP address of the PC with MAVproxy in the Navio2 console.