首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何从DJI camera Phantom 3专业无人机检索NV21数据

如何从DJI camera Phantom 3专业无人机检索NV21数据
EN

Stack Overflow用户
提问于 2017-02-10 18:10:13
回答 1查看 396关注 0票数 0

正如我在前一篇文章中所描述的那样,我正在开发一个Android移动应用程序,旨在实时增强无人机摄像头视图的可视化(具体地说,我正在使用相对SDK的DJI Phantom 3 Professional ),使用用于AR部分的维基框架。多亏了Alex's response,我结合dji's Video Stream Decoding实现了我自己的Wikitude Input Plugin

我现在有一些问题。首先,《大疆视频流解码》演示使用FFmpeg进行视频帧解析,使用MediaCodec进行硬件解码。因此,它有助于解析视频帧,解码来自DJI摄像机的原始视频流数据,并输出YUV数据。你建议我“从dji sdk中获取原始视频数据,并将其传递给维基SDK":由于维基输入插件需要YUV420格式,为了提供自定义摄像头,安排符合NV21标准,我应该将MediaCodec的YUV数据输出传递给它,对吗?

关于这一点,我尝试从MediaCodec输出中检索bytebuffers (可以通过将Surface参数设置为null进入configure()方法,该方法具有调用回调并将其传递给外部侦听器的效果),但是我在可视化中遇到了一些关于颜色的问题,因为编码的视频颜色不正确(蓝色和红色似乎颠倒了,当相机移动时会有太多噪音)。(请注意,当我传递Surface not null时,在指令codec.releaseOutputBuffer(outIndex,true)之后,MediaCodec会在上面渲染帧并正确显示视频流,但我需要将视频流传递给维基插件,因此我必须将surface设置为null)。

我尝试设置不同的MediaFormat.KEY_COLOR_FORMAT,但它们都不能正常工作。我该如何解决这一点?

EN

回答 1

Stack Overflow用户

发布于 2017-02-10 19:33:01

当使用MediaCodec解码为字节缓冲区时,您无法决定缓冲区使用什么颜色格式;解码器决定,您必须处理它。每个解码器可以使用不同的格式;其中一些可以是标准格式,如COLOR_FormatYUV420Planar (对应于I420)或COLOR_FormatYUV420SemiPlanar (对应于NV12 -而不是NV21),而其他解码器可以使用完全专有的格式。

例如,有关解码器可以返回哪些格式的示例,请参见https://android.googlesource.com/platform/cts/+/jb-mr2-release/tests/tests/media/src/android/media/cts/EncodeDecodeTest.java#401;有关解码器可以返回私有格式的参考,请参见https://android.googlesource.com/platform/cts/+/jb-mr2-release/tests/tests/media/src/android/media/cts/EncodeDecodeTest.java#963

您可以查看例如http://git.videolan.org/?p=vlc.git;a=blob;f=modules/codec/omxil/qcom.c;h=301e9150ae66075ca264e83566504802ed57578c;hb=bdc690e9c0e2516c00a6d3733a77a87a25d9b6e3,获取如何解释一种常见的专有颜色格式的示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42156649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档