Streaming From the Drone Without Rendering on Screen

Hello,

I am developing an application using GroundSDK Android that aims to do remote image processing of the drone’s video stream. I want to receive the stream on my app and send each frame to a remote machine without displaying it on the device’s screen. From my research, it seems that GSDKStreamView, the recommended way to access the stream, will not work without being displayed (since as I understand, the capture() method does a screen layout pixel copy so if it is not displayed it cannot retrieve the underlying image). Thus, as far as I can tell, there are only two options.

Option 1: use the internal YUVFrameSink class as the stream sink. This appears to do exactly what I want except the onFrame() callback returns a native pointer to an internal cpp struct (sdkcore_frame). I am unfamiliar with JNI so I have no idea whether there is an easy way to read this pointer in as a byte array into Java. If anyone knows how to do so, please let me know!

Option 2: use the RTSP stream generated by the drone (rtsp://192.168.42.1/live). I have played around with this method but I find that the RTSP stream has extremely poor performance compared to the internal GroundSDK stream. Namely, it has a tremendous amount of latency, up to 1 second at times, which causes the stream to lag behind real-time significantly. This is not acceptable for my project. If someone knows how to reduce this latency to <100 ms, please let me know!

If anyone at Parrot could offer some guidance on how to proceed, I would be very grateful. Thank you for your time and your help!

With YUV you could use the Google WebRTC stack for Android directly, this gives you minimum latency.

But I’m wondering about your 1s RTSP latency. I’m achieving about 150 ms (good conditions) with a GStreamer pipeline (which BTW could also be used as input for the GST WebRTC stack (webrtcbin))

In both cases you would have to mess with signaling and ICE on top, but there are solutions

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.