Live Stream Your DJI Drone With WowzaNovember 12, 2018
Learn how to live stream video from a DJI drone such as the Mavic using the Wowza Streaming Engine™ software, the Wowza Streaming Cloud™ service, and Wowza Streaming Cloud with Ultra Low Latency. In this video, Tim will walk you through all three possibilities, so that you’re drone-stream ready using the DJI GO app.
Want to follow along? Start your free trial.
Full Video Transcript:
Hi, Tim with Wowza here. I am going to show you today how to connect a DJI Drone using the DJI GO app on iOS to Wowza Streaming Cloud, Wowza Streaming Engine, and Wowza Ultra Low Latency Streaming Cloud, so just getting familiar a little bit with what we have here. I do have a drone hooked up to my screenshare right now, and I’ve got a little stopwatch and some goodies in there to kind of simulate a real drone environment.
I was going to do this actually live, but I thought, that’s crazy. I was going to actually have the drone hovering and then try to do all of this, but I figured that that was a little overkill. So, to start today, we’re going to go ahead and get into Wowza Streaming Cloud, that’s the service we’re going to do first, and one thing that’s really helpful, if you happen to be on a Mac device, there is the ability in iCloud to copy something on your full PC stack, and it’ll go through iCloud, and then it’ll be available on the clipboard on your iOS device. Copying the URLs, which is essentially what we’re going to be doing, is a very convenient thing to do. Either have that iCloud set up from a Mac to an iOS or just be ready to either instant message yourself or transport that through email, something, but we’re going to need to take text that is in a website and get it into the DJI GO App, and I’ll show you how we do that right now.
First thing we’re going to do, as you can see right now, we’re logged into Wowza Streaming Cloud. This is where if you’re a subscriber or you’re using a trial, you can actually log in and create a live stream that will deploy a transcoder, which then can provide the adaptive bitrate and all those functionalities. If you’re interested in more information on Wowza Streaming Cloud, certainly hit our website at wowza.com. So, what I’m going to do here is I’m going to create a live stream, and I’m going to call it “Tim’s DJI Mavic Pro,” and I’m going to choose my broadcast location. I’m in California right now, so I’m going to choose California, and then I’m going to choose where the stream is going to be coming from, and we do have a lot of partners listed in here, but in this case it’s going to be Other RTMP, and then it begins to ask you what you want to do with the RTMP.
Well, the critical component is we’re going to be pushing the stream. Wowza Streaming Cloud can pull the stream if you have an existing RTMP endpoint available, but in this case, we’re going to push the stream directly to Wowza Streaming Cloud. Leave everything else pretty much default. I’m actually going to leave 720p on, because I believe that’s what the Mavic Pro is publishing at. I’m going to turn it on to record, just for fun, and then another thing that’s important is to disable the authentication. To my knowledge, the RTMP publisher inside the DJI app does not support authentication, and we can go into other ways around that, but in this case, for all intents and purposes, just disable authentication.
So, here we go. First thing we want to do is get the RTMP URL, so that’s available in the video source and transcoder. We scroll down here, and you can see the source connection information, and this is where a lot of people get confused. So, you have the primary server, the port and the stream name, so these are critical components, but how do you format this for the DJI app? Well, if you … if I jump over to the drone really quick, this is what it wants. I’m going to go into … let’s see here. Is it showing?
There it is, it’s a little bit latent, so bear with me, but you can see where it says Select Live Broadcast Platform, and then I will choose Custom, and notice that’s it just one line of text that comes up. So, I need to format that so it makes sense, so I’m going to jump back over to Wowza Streaming Cloud and I’m going to grab first the Primary Server, which is the RTMP, so I’m going to copy that entire line not including the IP address inside the parenthesis, and I’m going to jump over to my handy-dandy text editor, and there’s the base URL. I’m using a bigger font than I may need, so let me expand this just a little bit.
So, this is the first part of it, and what we’re looking at here obviously is the RTMP prefix, and this is the subdomain and the domain. The port is on port 80, so that’s implied. There doesn’t need to be a port classification, and there’s the application name, but we, in order for this to work on the DJI, we also have to add the stream name, so we’ll go back to Wowza Streaming Cloud, and you can see here the Stream Name. I’m going to grab that, and in this case, it’s 68832192, so I’ve copied that. I’ll go back over to my text editor, add a slash, so you saw me add the forward slash and the stream name. That is all the DJI app needs in order to play back the stream, or, excuse me, to publish the stream. So, I’m going to take that entire URL. I’m going to copy it, and I’m going to go over to my DJI app now, and we are going to stream.
So, remember earlier when I was talking about how it’s nice to be able to copy/paste between the device? See, there it is, and let’s see if it works here. I’m going to hit paste, and there it is, so you should see that app in there. I’m going to hit Next. I’m going to try to hit Next without, there we go. It says Let’s go live now. I’m going to hit Start, and then you’ll see that it is doing a little handy-dandy countdown. Handy-dandy is the word I’m using today, by the way, so bear with me folks on my tricky nomenclature, and now we see that it is broadcasting. Up there in the left side, you can see the frames per second is variable, and then you can see the time that it’s streaming, and I think it’s actually picking up sound from my phone as well. So, we’re streaming to Wowza Streaming Cloud, let’s go over to Wowza Streaming Cloud and see if it’s actually working.
So, we’re going to go to Overview, and there it is. You can see it right there. You can actually see the video coming through in the thumbnail, and then if we go over here to Playback, this is the Playback tab, and I hit play. I should see, there it is. We should see some video, so you can see that right there that we have, you can see the stopwatch going, see my cool little Legos, and if you wanted, you could even switch it down to a lower quality, so I’m going to switch it to 575k, which in a couple of seconds here, it will … you may notice it on the recording, but it will switch over to a lower recording quality, so that’s it. If you wanted to embed this in a webpage all you would have to do is grab this embed code, this simple two lines of text, and you would be good to go, and this is how you play the stream to Wowza Streaming Cloud.
So, I’m sure you have lots of questions. Unfortunately, this isn’t a webinar, so if you have questions, you can email me, email@example.com, or you can mail firstname.lastname@example.org or you can even talk to our Sales team. We’re happy to field questions for you. I want to move on to the next step, which is going to be streaming to Wowza Streaming Engine, which is very, a little bit similar, but you have to set it up a little bit differently, so right now I’m going to stop the stream, so I’m going to tap the live stream there, Finish Live Streaming. It’s a little bit delayed on the screenshare, but I think I … I think you know where I’m going with this, so here we are now.
We’re going to open up Wowza Streaming Engine, so Wowza Streaming Engine’s a little different. This is software that you host on your own server. You could put it in an Amazon, Azure, or Google environment. You could have it on your laptop. It supports Linux, it supports Windows, and then it also even runs on Mac with some limitations. So, right now we have a couple things to recognize here with Wowza. First of all, up here you can see that, you might be able to see it, I’ve got a local 192.168 address, so that’s the address of my server, and I’m logged in on port 8088, and what I want to do, is send a stream to Wowza and play it back from the DJI. So, if … I would suggest going through the tutorial on how to set up Wowza, how to configure an RTMP application. We have several tutorials which are very helpful for getting to know our product.
I’m going to assume that you’ve already got it set up, you’ve already done a test stream, maybe from OBS or Wirecast, or maybe even Wowza GoCoder and you’re ready to try this with your DJI device, so as you’ve probably discovered, Wowza is broken down into applications. Let me zoom in a couple notches here so maybe you can see this a little bit better. Right now, I’m on a scheduling app, which is … it was actually something I was using for a demo a few minutes ago, but I’m just going to go to a generic live app, which is right here. This is what’s inside Wowza right when you turn it on. There’s a default live app.
The first thing I’m going to do is turn off source security. Right now, by default it is on, so I’m going to go ahead and edit this app, and turn RTMP sources to Open. Save that. This will just restart the app, which is a fairly instantaneous process, and then what I need to do is simply send the video to Wowza, Wowza Streaming Engine so that we can play it, and it’s going to eventually come up here in the Incoming Streams, so let’s switch over to my text editor and let’s put together a streaming URL.
So you see the one there that was from our previous. I’m going to do one that’s very similar for my local instance of Wowza, so it goes like this “rtmp://”, and then the address of my server, which is “192.168.10.141:1935,” and then you want to add the application, which you probably remember is “live.” The application is live, let me just show you here. This is the application name right here where I’m moving my cursor, so you go to application live, and then you can actually call it anything you want, the stream name itself, so I’m going to call it TimzDJI, and I did use capitals.
Wowza is case-sensitive, so that’s my streaming URL that I’m going to put in my DJI GO app, so I’m going to copy this, and let’s go back over to the drone, and I’m going to open up the streaming settings again, and I’m going to choose Custom, and I’m going to Select All, Delete, and then I’m going to Paste, and notice that it’s different and I can tell you that it’s pretty cool how you can paste between the phone and the computer. It makes a big difference. I think I accidentally deleted the DJI, so let me correct that.
Okay, I’m going to hit Next. Let’s go live now! So let’s see if this works. Get a little count in, it says Live. Don’t see any errors on the DJI device itself, so let’s go over here to Wowza, and then let’s refresh our incoming streams, and we have the DJI source coming in. We actually even have it being transcoded because we have the transcoder enabled for this particular application, so if I click on my DJI stream. This is the primary stream that’s coming in, it’s coming in at 1.9 megabits per second, and I’m going to go to a Test Player, so you see the test player app up here. Now I did, earlier I … this domain isn’t working, so let me hard-code this IP address, and then I should, when I hit start.
There it is, let me mute that and you can see that the stream is now coming through Wowza Streaming Engine.
So, I’m going to paste the URL. That’s what I got from Wowza over there. I’m going to put a title in it, Tim’s DJI, this is a paragraph blah blah blah, update the preview by hitting this blue button, and then I’m going to hit the play button, and there is my —
There is my, there’s my camera stream from the Gimbal, from the DJI, so again, that’s pretty cool. If you wanted to put this in a webpage, you simply grab the script in the header. There’s the div tag, and then you’ve got the script that you can drop into your webpage and you are good to go.
So that’s really quick how to get it playing in Wowza Streaming Engine, but wait there’s more. Wowza also has na Ultra Low Latency component inside Wowza Streaming Cloud, and I’m going to access that today using an app called Insomnia, and I’m going to go through a really quick demo here on how to actually get Wowza Streaming Cloud Ultra Low Latency to generate a channel. Once we have the channel generated, then you can actually use that to enter a streaming URL into your drone, and then you can watch it in ultra low latency, which is amazing. I may not have set that up too well. I’m a little all over the place with my description, but if you have more questions about Wowza Ultra Low Latency, you definitely need to go to wowza.com, talk to our Sales team, talk to myself personally. I’m happy to assist, but I do think the use case going ultra low latency from a DJI device all the way up through the cloud and then out to the world in under two seconds is fairly compelling, so let’s set this up really quick.
First of all, I’ve got in here Create RTMP Push. This is basically a URL call to create an ultra low latency stream, so I’m going to call it Tim’s DJI Stream, and this is again, this is me using the API. I recognize that this is a little bit more advanced. I like to do it using this tool because I can see visually what happens. So, again, if you have interest in ultra low latency, we have a lot of documentation on this. We do have tutorials on it, but this is just me leveraging the service for demonstration purposes. So, I changed it to Tim’s DJI Stream, this is the actual request that’s going to happen, I’m going to hit Send, and so it shot back some information that I can use to put into my DJI device, so right now you see that there’s a primary URL, and you can see that this has given us an RTMP publishing point.
It also, if you look down in this information, there’s also an ability to play it back using Apple HLS, you can see right here, so long story short, you send a command to the cloud API, it kicks back an address and some playback links, and again I don’t have time in this video to go through a lot of the detail and how to use the Ultra Low Latency API, but I did want to show you that you go in and you create the RTMP push. Now, I already have one that I’ve got created and I have a player linked to it, so I’m going to go to this stream info, I’m going to hit Send, and this is one I’ve, I created a little over a month ago just for demonstration purposes. It’s a live stream called ULL Demo Player, and what I’m going to do is I’m going this RTMP URL here, which again, it’s provided by the API, origin.cdn.wowza.com, I just copied it.
I’m going to go over to my DJI, and I’m going to once again access the custom settings. I might have fat-fingered this, bear with me. Oh, I have to stop the stream first, okay. So, I’ll finish live stream, that one going to Wowza Streaming Cloud, and I will go to Create Custom Live Broadcast again, or it was Wowza Streaming Engine before, but it doesn’t make any difference. I’m going to paste, so you see that URL that I got from the API, that’s new. I’m going to hit Next, gently hit next here. The next button is right by the keyboard, so it’s really easy to make a mistake.
I’m going to hit Start. Three, two, one. It looks like it’s trying to connect, it looks like it’s live, fantastic. So, you can see that the DJI is now broadcasting. You should be able to see the time clock, which is going to make a difference. Let me move over to the player, so here is the player that I set up for two demos. One would be the Ultra Low Latency and one would be the Ultra Low Latency in HLS, and remember it shows you both, it provides you both with a low-latency playback and also the Apple HLS playback, and it’s kind of interesting to see the latency performance here, so I’m going to refresh this page just because, and I’m going to start the low-latency playback, so it should come up here shortly. There it goes. It sometimes it takes a couple of seconds to get started, but once you’ve got it going, you’ll see that it—
It performs pretty well, so just keep an eye on that stopwatch, and then I’m also going to play back the standard Apple HLS, which is on the bottom-
And one thing you can see already is that the Ultra Low Latency is at 2230, and this is tailing behind about 10 seconds behind the Ultra Low Latency, and results may vary based on network conditions, distance from a server, et cetera, but what I do want to call it is that this is coming straight off the DJI, so I’m going to move … I’m going to move the Gimbal just a little bit here. I just moved it down, and I’m going to move it back up.
So, I’m doing that, I just moved it, and so it looks like about a second delay, and this is where is you notice it, so I’m going to move it on this mark right here. Mark. I just moved it down, so just a few seconds, you can see on that top player. I’ll move it up a little bit to help it look a little prettier, not that it matters because we are almost done, but that’s it. We’re playing through now Wowza Streaming Cloud Ultra Low Latency CDN, so if anywhere in the world, if you could access this player, you’d be able to watch this in Ultra Low Latency, and it actually works pretty good with the DJI encoder. Everything tends to work fairly standard.
Again, just a couple things to remember. If you’re using Wowza Streaming Cloud, disable the authentication. If you’re using Wowza Streaming Engine, disable authentication. If you have questions, wowza.com, we’ve got Wowza Streaming Cloud, which is a very easy way to get drone video out to the world. It’s non-branded, it’s totally yours. Wowza Streaming Engine, which is an internal, you-host-your-own-server environment, and then of course what we’re streaming right, which is Wowza Ultra Low Latency Cloud, so I’m going to stop, finish my stream here. Looks like, I mean, it still has the audio and video bitrate on there, so it’s kind of cool how you can see some statistics, I’m going to finish the live streaming because I think we’re good.
And that’s it, I just … Thank you for watching this demo today. I hope it came out okay in one take, and again, if you have any questions, please reach out. Thank you. Have a great rest of your day.