- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2017年07月03日 11:24:09
阅读数:3334
DJI_Mobile_SDK是大疆为开发者提供的开发无人机应用的开发接口,可以实现对无人机飞行的控制,也可以利用无人机相机完成一些视觉任务。目前网上的开发教程主要集中于 DJI 开发者社区,网上的资源非常少。废话不多说~~,现在将在Android项目中学习到的东西总结一下。
使用大疆无人机做计算机视觉项目,第一步就是要将从云台相机中获取的视频流解析成图像帧,DJI在github上提供了视频解码成图像帧的Demo程序。 官网说明文档并没有对如何将这个解码Demo集成进自己的项目进行说明,只是简单说明了DJIVideoStreamDecoder和
NativeHelper类的主要用途。附上解码的源程序
Android源代码github地址:/DJI-Mobile-SDK-Tutorials/Android-VideoStreamDecodingSample.git
就将对如何使用这个模块进行说明。
一、模块结构
首先要说明的是,整个解码过程是通过FFmpeg和MediaCodec实现,按照官网的教程,DJIVideoStreamDecoder.java和NativeHelper.java是实现解码的关键类。按照官网的教程分为以下步骤:
1. 初始化一个NativeHelper的实例对象,来监听来自无人机高空的视频数据。
2.将原始的H.264视频数据送入FFmpeg中解析。
3.将解析完成的视频数据从FFmpeg中取出,并将解析后的数据缓存到图像帧序列中
4.将MediaCodec作为一个解码器,然后对视频中的I帧进行捕获。
5.解码完成后,可为MediaCodec的输出数据配置一个TextureView或SurfaceView用来对视频画面进行预览,或者调用监听器对解码数据进行监听完成其他操作。
6.释放FFmpeg和MediaCodec资源。
二、解码调用
看完上述步骤,我们对解码过程有了初步的认识,以下是DJIVideoStreamDecoder类中的变量。其中instance是解码类的实例,解码出的视频帧会存放在frameQueue中。handle类涉及线程控制,如果需要了解HandleThread的用法,请点击 此链接。在Demo中解码线程已经全部实现,不需要我们再做任何处理。
1.DJIVideoStreamDecoder.java
private static DJIVideoStreamDecoder instance;
private QueueDJIFrame frameQueue;
private HandlerThread dataHandlerThread;
private Handler dataHandler;
private HandlerThread callbackHandlerThread;
private Handler callbackHandler;
private Context context;
private MediaCodec codec;
private Surface surface;
public int frameIndex = -1;
private long currentTime;
public int width;
public int height;
private boolean hasIFrameInQueue = false;
private boolean hasIFrameInCodec;
private ByteBuffer[] inputBuffers;
private ByteBuffer[] outputBuffers;
MediaCodec.BufferInfo bufferInfo = new MediaCodec.BufferInfo();
LinkedListLong bufferChangedQueue=new LinkedListLong();
private long createTime;
2.Mainactivity.java
实现流数据转换为图像的关键步骤在MainActivity.java中实现,值得注意的是在Android系统中,图像是以YUVImage的格式传递,因此,在存储数据的时候要使用YUV图像格式,对于每秒解析的图像帧数量,通过DJIVIdeoStreamDecoder.getInstance().frameIndex控制,比如Demo中对30取余,表示仅对序号为30的
您可能关注的文档
- 经纬M200安全使用注意事项.docx
- 悟 1安全使用注意事项.docx
- 悟 2安全使用注意事项.docx
- 晓安全飞行注意事项.docx
- 御精灵安全飞行注意事项.docx
- M600Pro安全使用注意事项.docx
- Tello 快速入门指南 v1.4.pdf
- Spark无人机教学课件.pptx
- android APP版本检测升级.doc
- 大疆无人机二次开发简介-引入DJI mobile SDK 4.4.1.doc
- 绿电2022年系列报告之一:业绩利空释放,改革推动业绩反转和确定成长.docx
- 化学化工行业数字化转型ERP项目企业信息化规划实施方案.pdf
- 【研报】三部门绿电交易政策解读:溢价等额冲抵补贴,绿电交易规模有望提升---国海证券.docx
- 中国债券市场的未来.pdf
- 绿电制绿氢:实现“双碳”目标的有力武器-华创证券.docx
- 【深度分析】浅析绿证、配额制和碳交易市场对电力行业影响-长城证券.docx
- 绿电:景气度+集中度+盈利性均提升,资源获取和运营管理是核心壁垒.docx
- 节电产业与绿电应用年度报告(2022年版)摘要版--节能协会.docx
- 2024年中国人工智能系列白皮书-智能系统工程.pdf
- 如何进行行业研究 ——以幼教产业为例.pdf
最近下载
- 外研版(2019)高中英语必修第二册Unit2单元测试卷(有答案).pdf VIP
- 手术室护士长个人工作总结PPT.pptx
- (广州一模)广东省广州市2024届高三一模数学试卷(含答案解析).docx VIP
- 软件生存周期控制程序-(软件) 单元测试报告.doc VIP
- (完整版)心力衰竭课件.pptx VIP
- 部编版四年级语文下册第一单元学历案(2课时版).docx
- JGJT46-2024建筑与市政工程施工现场临时用电安全技术标准解读课件.pptx
- 智慧水务概论 (1).pptx
- Canon佳能激光打印机LBP系列LBP122dwimageCLASS LBP122dw LBP121dn 设置指南.pdf
- 机械振动与冲击人体暴露于全身振动的评价+第1部分一般要求.pdf
文档评论(0)