This is a new Android App for running a Heads Up Display on a SmartPhone or table computer or Windows. It's available on the Google Play store at https://play.google.com/store/apps/details?id=org.qtproject.qtgstreamer

If you want to side-load, I have posted a free version on dropbox at https://www.dropbox.com/s/g38tv79z3ey8yks/QtGStreamerHUD.apk?dl=0

There is also a windows version available at https://www.dropbox.com/s/km52szl7ghdo15a/GStreamerHUDApp.msi?dl=0

This app will overlay the HUD on a video stream using GStreamer, or you can run the app without video with a normal HUD.  

The App will automatically listen for a MAV-Link data stream on UDP port 14550, the default UDP port for MAV-Link. You can also configure the app to use TCP, and on windows you can connect directly to a serial port. 

If you want to display data on a ground station PC and the App at the same time, you can use MavProxy to split the UDP stream, and then connect to your UAV using Mission Planner. 

Here is a sample command that I use to split the data stream with MavProxy:

mavproxy --master=COM5,115200 --out= --out=

The ground station PC is at, and the SmartPhone is at (on my wifi network).  You will have to configure the IP address according to your own WiFi network. My WiFi network in the field is a Ubiquity Rocket M5 configured as an access point, and a second M5 is on the UAV, so I can get live video from the UAV over the same network that connects the smartphone. 

For the windows version, you can run the HUD on the same PC as MissionPlanner (or APM Planner), and use MavProxy with a different UDP port for the HUD.  

If you want to use the video overlay, you will need to have a valid gstreamer data stream running, either over UDP or TCP.  For my setup, I am using a Raspberry PI streaming H264 over UDP using this command on the PI:

raspivid  -t 0 -w 1280 -h 720 -fps 40 -b 4000000 -o - | gst-launch-1.0 -v fdsrc ! h264parse config-interval=1 ! rtph264pay ! udpsink host= $1 port=9000

The "$1" argument is the IP address of your GCS or SmartPhone/Tablet PC.   This command is for 720p, but you should consider the resolution of the device and adjust accordingly.  It makes no sense to send a 720p video to a phone with a 800x600 display.

In the HUD, configure the gstreamer pipeline with this string:

udpsrc port=9000  buffer-size=60000 ! application/x-rtp,encoding-name=H264,payload=96 ! rtph264depay ! h264parse ! queue ! avdec_h264

Do not include a video sink element, as the App will add this dynamically.  You can change the port to whatever you wish as long as your PCs do not have a firewall blocking the port.

Another thing to consider is the processing power of your device. If you see a lot of pixelation, your device is too slow, so you will need to change the resolution of the transmission and/or the bitrate. Some smartphones are just too slow to display the video at full resolution. I have tested 720p on my Google Nexus 6 and it works fine, but on a cheap tablet PC, I had to slow it down and switch to 800x600.  

The App is easy to setup, however if you have any questions or issues, please send me feedback.

Happy Flying!

E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones


  • @Aleksander,  It's possible to port to linux. I may work on it in a few weeks depending on how much free time I can get. 

  • Is there any chance to get this working on a Linux platform?

    I'm currently constructing a GCS with two Rpi's. Now a i have one hooked up to a 7" touch screen running mavproxy and APM planner for telemetry. The plan is to use the second Rpi with a 7" screen for recieving the gstreamer stream. 

  • @Aleksander,   The windows version is on dropbox at https://www.dropbox.com/s/ssfxi5kwh93c0iu/GStreamerHUD.msi?dl=0

    Shared with Dropbox
  • Hello Patrick,

    Do you still have this app available for windows?

  • @Abdoulaye Faye, It took a fair bit of modification to make QtGstreamer work on Android.  The source code is on GIT if you want to download it.

  • Great job ! Thanks for sharing.

    I am really interested in how you managed to build QtGstreamer for Android.


  • here is the python code I've just finished... but yet not tested

    any hint/feedback more than welcome

    Dropbox - Error
    Dropbox is a free service that lets you bring your photos, docs, and videos anywhere and share them easily. Never email yourself a file again!
  • @Patrick, thanks for info.

    I'm writing a python module very similar to what u are using for GoPro, but I'm trying to use one channel from X8R to switch from photo to video (and viceversa) and one channel as shooter... but still far from finalization of the python module: asap I finalize, I'll share the result

  • I have also been looking at Ubiquiti mini pcie for my Jetson TK1

    Ubiquiti SR71-X Express Card - Google Search
  • Here's a picture of how I mounted the ACA1 with external antennas. I get multiple miles range with this setup.


This reply was deleted.