首页 > 解决方案 > DJI mavic pro:使用遥控器时接收到损坏的视频

问题描述

我目前正在使用您的 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。由此产生的视频质量是完美的。

但是,当使用遥控器时,我得到的数据完全不同。虽然“大小”变量告诉我接收到的帧重约 2000 字节,但帧本身(包含在名为“字节”的变量中)的重量超过 30 KB。此外,这个 30 Kb 的帧似乎已损坏,因为它主要包含我认为是缓冲区字节的内容(一长串 0)。

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

我尝试过的:

视频中的神器

系统信息:

你知道是什么导致了这种腐败吗?

标签: javaandroiddji-sdk

解决方案


你得一一排除问题

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

如果您是 DJI 合作伙伴,您可以致电他们确认固件。今天我们刚刚遇到了 M200 和 PSDK 的一些固件问题。我们给他们发了信息,他们很快就回复了。我们必须更改固件以启用 DJI PSDK 的云台电源控制。

(2) 更改射频频谱,例如从 15 到 18。以确保它不是因为某些跳频或其他人的故意干扰

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

(4)如果你借了一架无人机,他们都有同样的问题,那么它可能在你的代码的某个地方,有一个错误。

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


推荐阅读