大疆无人机 Android 开发总结——视频解码

本文总结了使用DJI Mobile SDK在Android项目中进行视频解码的关键步骤,包括初始化NativeHelper、FFmpeg解析H.264数据、MediaCodec解码I帧以及图像帧的存储和预览。通过DJIVideoStreamDecoder和NativeHelper类,结合YUVImage处理视频帧,实现每秒取帧并保存为JPG图像。
摘要由CSDN通过智能技术生成

DJI_Mobile_SDK是大疆为开发者提供的开发无人机应用的开发接口,可以实现对无人机飞行的控制,也可以利用无人机相机完成一些视觉任务。目前网上的开发教程主要集中于DJI 开发者社区网上的资源非常少。废话不多说~~,现在将在Android项目中学习到的东西总结一下。

使用大疆无人机做计算机视觉项目,第一步就是要将从云台相机中获取的视频流解析成图像帧,DJI在github上提供了视频解码成图像帧的Demo程序。官网说明文档并没有对如何将这个解码Demo集成进自己的项目进行说明,只是简单说明了DJIVideoStreamDecoder和

NativeHelper类的主要用途。附上解码的源程序

Android源代码github地址:https://github.com/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中解码线程已经全部实现,不需要我们再做任

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值