DJI mavic pro:使用遥控器时收到损坏的视频

时间:2018-07-09 12:41:40

标签: java android dji-sdk

我目前正在使用您的SDK开发一个Android应用程序。该应用程序应该连接到Mavic Pro无人机,以便接收其视频流和其他相关数据。

当手机通过WiFi连接到无人机时,此应用程序运行良好,但是,当通过遥控器连接手机时,视频流损坏。

要接收视频帧,我使用以下代码:

// Callback fired when receiving a new frame of 'size' bytes
VideoFeeder.getInstance().getPrimaryVideoFeed().setCallback((bytes, size) -> {

            if (codecManager != null) {
                // Shows the video in a "SurfaceTexture" on the phone
                codecManager.sendDataToDecoder(bytes, size, UsbAccessoryService.VideoStreamSource.Camera.getIndex());

                DroneVideoFrame videoFrame = new DroneVideoFrame(bytes, size, getVideoWidth(), getVideoHeight());

            }
        });

如上所述,当通过WiFi连接到无人机时,此代码段非常适用。确切地说,每个帧包含〜2000字节的数据,视频的分辨率为1280x720p,帧率为24fps。由此产生的视频质量是完美的。

但是,使用遥控器时,我得到的数据完全不同。尽管“ size”变量告诉我所接收的帧重约2000个字节,但帧本身(包含在名为“ bytes”的变量中)重30多个字节。而且,此30 Kb帧似乎已损坏,因为它主要包含我认为是缓冲区字节的内容(一长串0)。

此外,函数“ getVideoWidth”和“ getVideoHeight”分别返回“ 9px”和“ 16px”,这显然是错误的。而且,那些功能在使用无人机WiFi时会返回正确的值。

我尝试过的方法:

  • 更新固件

  • 更新DJI Go 4应用程序。

  • 截断在帧中看到的缓冲区字节(序列“ 0”)。如以下图片所示,这会产生一个充满伪像的视频

Artifacts in the video

系统信息:

您知道导致腐败的原因是什么吗?

1 个答案:

答案 0 :(得分:0)

您必须一个个地排除问题

(1)可以尝试降级一个版本吗?这将是固件问题。 DJI已知存在此类问题。最新并不意味着最安全。有关消费品的评论,您可以在这里https://forum.dji.com/thread-120739-1-1.html进行参考。

如果您是DJI合作伙伴,可以致电他们进行固件确认。今天,我们刚刚遇到了M200和PSDK的固件问题。我们向他们发送消息,然后他们迅速答复。我们必须更改固件才能为DJI PSDK启用云台电源控制。

(2)将RF频谱从15更改为18。确保不是由于某些跳频或其他人的故意干扰造成的

(3)如果更改固件版本和RF无法解决问题,请尝试借用第二套固件并运行相同的代码以排除硬件问题,例如RF链接断开。

(4)如果您借用了无人驾驶飞机,并且它们都有相同的问题,那么它可能在您的代码中的某个位置,这是一个错误。

到目前为止,我能想到的就是这些。如果我还记得别的东西,我会加病