Here are some clarifications about the video streaming in the Bebop (& other SDK products):
The first versions used the “ARStream” protocol, described in the protocol documentation. This protocol is no longer supported on latest products, but is still the only one available on the Jumping Sumos (&variants) and the PowerUP FPV.
The Bebop (&Bebop2, Disco…) does use a RTP-compatible streaming protocol (named “ARStream2” in parts of the SDK. It does NOT use RTSP as a session establishment protocol, but rather
ARCommands sent through our SDK. This means that you need a SDK client to actually start (& maintain) the video streaming, but once started, you can receive it in any RTP-compatible client (This was the point of the
BebopStreamVLC application note). While the AN might be a little bit outdated, this is still the current state of the video streaming on the Bebop, and you should be able to do it with a python client instead of the
As said in 2.: No, we did not change the streaming. What you see in the sample is just an integrated RTP Client within the SDK. The video callbacks are indeed providing raw h.264 frames, and you’ll need to decode them before doing any processing.
The Mambo does use a complete RTSP/RTP stack, which means that the video streaming can be started without any SDK connection (just connect a RTSP client to
rtsp://192.168.99.1/media/stream2 and you should get the video stream). The difference with the Bebop mainly comes from hardware differences (the SDK client & the camera are on two different processors).
As a side note, I ran a quick test of the 2. point with Bybop (my own python implementation of the SDK), by doing the following things:
- I added the
'arstream2_client_[stream/control]_port' keys into the handshake, so the drone known the ports to use, and created
start_stream()/stop_stream() functions for the BebopDrone object. This commit is pushed on the Bybop master branch.
- I copied the bebop.sdp file from the Application Note.
- While connected to the Bebop wifi network, I started Bybop
interactive.py sample and, when connected, called
vlc bebop.sdp on another shell.
As I properly got the stream in VLC (there is a noticeable latency, but this is due to VLC doing buffering for network streams by default). You could probably adapt this to get the stream into any RTP-compatible client
I hope that this clarified some misconceptions about the video streaming on the Bebop !