Downloading media from Drone through SkyControlller RNDIS

Hello all,

I am in need of programmatically downloading videos and pictures triggered in flight. I have several options but they are all weird. I will detail below:

  • I found that if I run Sphinx of ANAFI I am able to connect to an FTP server in the IP address of the simulated Anafi. Unfortunately when I connect to the real ANAFI (through SkyController or not), I cannot reach any FTP server. Am i missing something?

  • I found that there is a REST API for the media, but the location is not reachable if I connect to the ANAFI IP address (192.168.53.1). On the other hand if I connect directly to the ANAFI wifi hotspot 192.168.42.1, i am offered the REST API. I guess this is due to the fact that I cannot reach the ANAFI network directly through the SkyController, but then this makes me have to choose between having the SkyController and Media Download, which is a terrible choice.

  • I found that the Android(Java) and iOS(swift) SDKs have support for download and listing of media. Unfortunately for Olympe(python) I can only find media listing, nothing about downloading and thumbnails.

With all of this I am very sad and this seems like a massive set-back on my project where i created a web based fleet manager of ANAFIs. It already takes off, lands, moves on map, streams live low latency videos to the browser and mobile…but i cannot download media :frowning:

Hope somebody can offer me a way out of this problem.

Hi,

You’ve correctly found that the Anafi provides a REST API for media downloading. This API is also available when you’re connected through a SkyController 3, but in this case you will need to use the SkyController 3 IP address (usually 192.168.53.1), and use port 180 instead of 80.

So basically, to list your medias, you can use either http://192.168.42.1/api/v1/media/medias when directly connected to the drone access point, or http://192.168.53.1:180/api/v1/media/medias when connected through a SkyController 3. The same applies for all the download URLs.

However, due to how the redirect is handled, you cannot use the web interface with the SkyController 3, just the REST API.

Regards,
Nicolas.

2 Likes

Hi Nicolas,

Thanks a lot! So cool. I have no use for the web interface so no loss for me, even so i am convinced some greasemonkey hacks could probably fix it, but is just some advice for whoever may need it.

Now the last thing. Where can I find documentation on this API? Do i need to have a look at the website code?

Best regards
Paulo Neves

So answering to myself…
The API is very simple just access http://192.168.53.1:180/api/v1/media/medias and there is json file with the data and url’s. An example:

[ { "media_id": "10000057", "type": "VIDEO", "datetime": "20191004T002534+0200", "size": 68545156, "video_mode": "Standard", "duration": 5163, "run_id": "0B0321BC3660A808E74A665813C81793", "thumbnail": "/data/thumbnails/100000570059.MP4", "resources": [ { "media_id": "10000057", "resource_id": "100000570059.MP4", "type": "VIDEO", "format": "MP4", "datetime": "20191004T002534+0200", "size": 68545156, "url": "/data/media/100000570059.MP4", "width": 3840, "height": 2160, "thumbnail": "/data/thumbnails/100000570059.MP4", "video_mode": "Standard", "replay_url": "replay/100000570059.MP4", "duration": 5163 } ] } ]
Notes:

  • The urls are all relative to the IP address not to the API.
  • The thumbnails have extension MP4 but are in fact JPEG

Also if you need to use SkyController to access the dashboard you do not need greasemonkey. Just
sudo socat tcp-listen:80,reuseaddr,fork tcp:192.168.53.1:180 and connect to localhost in your browser.

We will provide the full Web API documentation really soon! :slight_smile: