Monday 24 April 2017

Part 1: Low-Latency Live Wireless Flight Video on all your devices (And YouTube Live Streaming it)



Today I discovered that I am able to have super low-latency Wireless video on all my drone devices and i'm super-happy with that. What this means is:

I can have video on my laptop with Ardupilot's Mission Planner:


I can have video on my Nvidia Jetson:

Also, video on Android using Tower app:


I am particularly happy that I can capture fast wireless video on the Jetson board. I think this enables a host of opportunities to integrate with AI experiments from  the ground ensuring your code runs before mounting. I like it. I like my mini 210mm size Ardupilot drone too. Such a good tiny thing to experiment with without fear of breaking it.

I like that I can use both Tower and Mission Planner to provide both video and telemetry, my range tests have been around 1km. I can effectively launch, view and control using my tiny smartphone alone. Cool.

I can even capture on both smartphone, laptop, and jetson at the same time equally so I can launch and monitor using smartphone or laptop, and have the jetson AI experiments running seperately so as not to affect flight control should my Jetson code crash. Good stuff! Now I'm fairly sure, that DJI won't let you do all that.... Thanks to open source community.


YouTube Live - Streaming.

So what now? one thought I had was to learn about live streaming my live flight footage. There are many options and many platforms to do this - Livestream.com, Ustream.tv, and lots of others listed here, and many more i'm sure, as well as social media platforms which are now allowing live streaming. There are literally gazillions of services out there.

Sticking with just one service for my experiments, making a snap choice, I went with YouTube live to see if I could stream on my many devices. Here's how it worked out.

Android Smartphone

I used Youtube Gaming app on my android device to stream my live drone footage. It is probably the smoothest path to successfully streaming on all my tested devices. Setting up is easy, streaming works, and the compactness of a smartphone means you're not lugging around heavy equipment with wires trailing behind you n the dirt. I suspect this is the way forward for most people.

Laptop

I chose to look at OBSproject.com as my first choice software for this test, mostly because it is free and has no nag-screen or watermarks. I have tried other software in the past such as wirecast and Vidbaster, I found Wirecast to be the least resource heavy software, that is, the one which made my laptop get less-hot than other software. Vidblaster is feature rich but resource heavy.
OBS was a new one to me so I tried it out. It works fine and setup is easy for youtube live streaming on my laptop. I approve of it. Maybe I will retest wirecast and vidblaster for live streaming my live drone footage in future to compare. There are other software listed here to try too.

Jetson TK1

Pushing the envelope a little bit, I decided to try live streaming to youtube live using my Nvidia Jetson TK1 board which uses Ubuntu 14.0.x and is 32-bit. It wasn't successful. Primarily, this was because the go-to Linux streaming & encoding software ffmpeg.org does not appear to be already installed on the Jetson, and when I tried to compile it, I was flooded with errors, so I gave up on it after a day. Fail. There is also a version of OBSproject for Linux which I wanted to install, but alas, it is dependent upon ffmpeg being installed firstly. Fuck it.

Raspberry Pi 2

I decided to give my Raspberry Pi 2 a go, instead of one of my Pi Zero W boards. Mostly because the pi 2 is more powerful than the pi zero W. I was more successful with my installs than with the Jetson board - I compiled and installed easily, learned the appropriate scripts, set them up as .sh scripts to run, and got the live footage to successfully stream/cast/encode to Youtube servers.
However, on my laptop, waiting for the stream to show up, I got the initial green dot of success, the good message 'Stream Starting' and this looked good....I waited. It didn't show up. I considered it a fail.... But such a close success.
Reasons for failure? I don't know. I tried many different encoding and script variations for ffmpeg, but it seemed to fail either at the Youtube server end, or, (guessing) my router blocking it. Why this is, I do not know. It seems to want to work, it gets youtube live to initialise the stream, but I never get the video appearing. Fuck. I spent so may hours on getting Raspberry Pi & ffmpeg running it caused my brain to melt.

So that is where I am now at. I recommend Laptop or Smartphone for streaming your live flight footage, but the Jetson and RPi is a bit of a struggle. Perhaps the Jetson TX2 will work better than the TK1, assuming the TX2 is using 64-bit, Ubuntu 16.04 which I am assuming will work better with ffmpeg than 14.0.4 LTS on the TK1. Discovery is key.

I think the Raspberry Pi board is very close to to being a successful streaming board. I might keep at it. Some questions I have to solve.


Thanks for reading.

3 comments:

Francisco said...

Hey congratulations!

Nice article! What are you using to have "super low-latency Wireless video"? Do you have any article explaining it?

BTW, I'm also around London city enjoying it, you can see my posts here: https://twitter.com/Franciscodr
Also here: http://robotshop.com/letsmakerobots//users/franciscodr

See you around and thanks for sharing!

Kind regards,
Francisco

DalyBulge said...

thanks, I'm looking to make a kickstarter project, I hope to crowdfund my product idea

Unknown said...

Which frequency are you using?