开发者社区 问答 正文

DJI SDK:如何更改输入视频流的分辨率。

我通过VideoFeeder从PrimaryVideoFeed接收了原始的H264视频,并将其发送到DJICodecManager。使用DJI Phantom 4,YuvDataCallback可以接收分辨率为HD(1280x720)的正确视频帧。配合DJI Phantom 4 Advanced和HDMI(第54部分)模块,它可以接收破碎的Full HD(1920x1080)视频帧。外观如下:

损坏的视频帧

从图像处理经验上讲,当二进制数据不是声明的格式时,就会发生这种情况,但是无论如何这并没有太大帮助。

因此,出现两个问题:

是否可以选择输入视频流的分辨率?如果是这样,怎么办?

使用P4 Advanced的视频帧会发生什么情况?它的实际格式是什么?如何解决?

这是视频流初始化源代码:

DJICodecManager  mCodecManager_ = new DJICodecManager(workContext, null, 0, 0, UsbAccessoryService.VideoStreamSource.Camera);
VideoFeeder.getInstance().getPrimaryVideoFeed().addVideoDataListener((bytes, size) ->  mCodecManager_.sendDataToDecoder(bytes, size));
mCodecManager_.enabledYuvData(true);
mCodecManager_.setYuvDataCallback(yuv_handler_);

展开
收起
垚tutu 2019-11-28 18:41:48 1713 分享 版权
阿里云 AI 助理回答

从你的描述来看,你正在处理DJI无人机的视频流数据,并且在不同型号(Phantom 4与Phantom 4 Advanced搭配HDMI模块)之间遇到了不同的问题。针对你的两个问题,这里提供一些可能的解决方案和方向:

1. 是否可以选择输入视频流的分辨率?如何操作?

通常情况下,DJI无人机的视频输出分辨率是可以在无人机的设置中进行选择的。这通常涉及到进入无人机的相机设置菜单,然后选择合适的视频分辨率。对于Phantom 4系列,你应该能够找到720p、1080p等不同分辨率的选项。

如果你需要通过编程方式控制视频流的分辨率,这通常依赖于DJI Mobile SDK提供的功能。你需要查阅DJI Mobile SDK文档,看看是否提供了API来动态调整视频流的分辨率。例如,SDK可能有方法允许你设置相机的工作模式或视频配置,间接影响到视频流的分辨率。

2. 使用P4 Advanced的视频帧发生了什么情况?实际格式是什么?如何解决?

破碎的Full HD视频帧可能是因为视频编码、传输或者解码过程中出现了问题。虽然你提到二进制数据格式不匹配可能是原因之一,但考虑到在使用Phantom 4时一切正常,问题可能更具体地与Phantom 4 Advanced的HDMI模块兼容性或配置有关。

  • 检查HDMI模块设置:确保HDMI模块正确安装并配置为输出期望的分辨率和格式。某些设备可能需要特定的设置或固件版本以支持特定的分辨率或帧率。

  • 视频流格式确认:尽管你已经指定了视频流源为Camera,但为了进一步诊断,建议查看DJI Mobile SDK文档,了解如何获取当前视频流的实际格式信息。这有助于确认是否真的接收到的是预期的Full HD H264格式。

  • 解码器兼容性和配置:确保DJICodecManager的配置与接收的视频流相匹配。可能需要根据视频流的实际参数调整解码器的设置。检查是否有更新的SDK版本或解码库,因为这些问题有时可以通过升级软件解决。

  • 错误处理和日志:增加详细的错误处理和日志记录,以便更好地理解在处理视频流时哪里出了问题。这包括检查返回的错误代码、异常信息以及任何可用的SDK调试工具。

如果以上步骤不能解决问题,考虑联系DJI开发者支持或查阅DJI开发者论坛,那里可能会有遇到类似问题的开发者分享他们的解决方案。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答