Remote live streaming to AWS Media Services from a DJI Spark drone
I’m Vaughn Hawk, a Cloud Engineer for Metal Toad for over 3 years. This project idea came about from my love and fascination with drones, video editing, and photography, and one thing I’ve noticed is that other than professional level drones (like production company level), there doesn’t seem to be any way to remotely backup your data, and live streaming was limited to basically only the pilot.
Drones, let's face it, are amazing. GPS, auto stabilization, stabilized HD cameras, aerial photography and videos, and just fun to use. I’m never not amazed when I use one, even if it’s a bit milder of amazement than when I first flew one. I use them when I go camping or hiking to scout terrain. You’d be amazed at what is even a few hundred yards from you that you just can’t see when you’re in the woods — yes, you have to be careful due to trees, but I have seen things I doubt I would have ever seen, thanks to drones.
But then I thought a bit bigger; what if you worked for a start-up production company, and couldn’t afford a $3000 drone? What if you could be talking to your home office over the phone while being a thousand miles away, and they can see exactly what you were seeing? And also, what if you could remotely upload/backup your video footage without ever having to plug your memory card into a computer?
And that’s what I found interesting about this project. This wasn’t some proof of concept idea, that while interesting, and possibly amazing, ended up being very niche and other than a technology demo, just didn’t have any real legs. This is something that I would use. This is something that I think many other drone pilots would use. And so we made this into a reality.
I used a bottom tier DJI Spark drone, similar to this one:
As you can see, very compact, weighs about 2 lbs, and is comparatively inexpensive, and has most of the features the more expensive drones have. One of the features that comes with the drone is the ability to live stream directly to your phone via WiFi, directly connect to a cell phone or tablet with a USB cable that connects to the controller (which gives you far greater range than just your cell phones WiFi, listed at about a mile), and also remote streaming via the RTMP protocol. Without that last feature, this project would have almost certainly taken more than 3 days, so most of our work was focused on the cloud infrastructure.
During our setup, we used several “test” rtmp streams to make sure we were getting data and everything was working as expected, and we weren’t solely relying on the drones camera output when initially setting it up. That saved us a ton of time, as even when not flying, the DJI Spark has about a 30 minute battery time, and of course shorter at 16 minutes when in flight.
We used CloudFormation to initially setup the AWS Media Services for speed and repeatability, and then further updated the template as we went to improve performance, and add features such as the ability to write to S3 during a stream. Our main issue was latency; ideally I would have liked to have it shorter than what we achieved, and I think we certainly could have, but we just ran out of time.
One thing I do want to focus on is the relative ease we were able to setup a video streaming platform in AWS, and begin testing. I think that is key; video is already hard enough, finding locations, travel, purchasing hardware, lighting, time of day, client requests — so having something I could almost email a client (or github) who has an AWS account and be ready to go in a few minutes is pretty incredible to me.
So did we achieve the end goal of live streaming to anywhere in the world, and having a digital backup of your filmed footage from your drone? Absolutely, as long as you have a cellular signal :)
There is still more work that I’d like to accomplish, primarily with latency, and perhaps automated notifications to your email account when a streamed video was uploaded and on s3, but I was very happy with how this project turned out, and is definitely something I’ll be using in the future.