从DJI无人机解码Android上的视频流

从DJI无人机解码Android上的视频流,第1张

概述嗨,我想在DJI phantom 3 pro的视频流上使用OpenCv进行一些图像处理.不幸的是,这件事是必要的自己解码视频.我知道应该使用Media Codec Android类,但我不知道该怎么做.我看到了一些从视频文件中解码视频的例子,但我无法根据我的目标修改此代码.有人可以展示一些示例或教程怎么做?感谢帮助mReceivedVideoDataCall

嗨,我想在DJI phantom 3 pro的视频流上使用OpenCv进行一些图像处理.不幸的是,这件事是必要的自己解码视频.我知道应该使用Media Codec Android类,但我不知道该怎么做.我看到了一些从视频文件中解码视频的例子,但我无法根据我的目标修改此代码.有人可以展示一些示例或教程怎么做?感谢帮助

mReceivedVIDeoDataCallBack = new DJIReceivedVIDeoDataCallBack(){        @OverrIDe        public voID onResult(byte[] vIDeoBuffer,int size){            //recvData = true;            //DJI methods for deCoding                          //mDjiGLSurfaceVIEw.setDataToDecoder(vIDeoBuffer,size);        }    };

这是从无人机发送编码流的方法,我需要发送解码vIDeoBuffer然后修改为Mat for OpenCV.最佳答案像这样初始化视频回调

mReceivedVIDeoDataCallBack = new DJICamera.CameraReceivedVIDeoDataCallback() {            @OverrIDe            public voID onResult(byte[] vIDeoBuffer,int size) {                if(mCodecManager != null){                    // Send the raw H264 vIDeo data to codec manager for deCoding                    mCodecManager.sendDataToDecoder(vIDeoBuffer,size);                }else {                    Log.e(TAG,"mCodecManager is null");                 }            }        }

让您的活动实现TextureVIEw.SurfaceTextureListener
并且对于TextureVIEw mVIDeoSurface在初始化之后调用此行:

mVIDeoSurface.setSurfaceTextureListener(this);

然后实施:

    @OverrIDe    public voID onSurfaceTextureAvailable(SurfaceTexture surface,int wIDth,int height) {        Log.v(TAG,"onSurfaceTextureAvailable");        DJICamera camera = FPVDemoApplication.getCameraInstance();        if (mCodecManager == null && surface != null && camera != null) {            //normal init for the surface            mCodecManager = new DJICodecManager(this,surface,wIDth,height);            Log.v(TAG,"Initialized CodecManager");        }    }    @OverrIDe    public voID onSurfaceTextureSizeChanged(SurfaceTexture surface,"onSurfaceTextureSizeChanged");    }    @OverrIDe    public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {        Log.v(TAG,"onSurfaceTextureDestroyed");        if (mCodecManager != null) {            mCodecManager.cleanSurface();            mCodecManager = null;        }        return false;    }    @OverrIDe    public voID onSurfaceTextureUpdated(SurfaceTexture surface) {        final Bitmap image = mVIDeoSurface.getBitmap();        //Do whatever you want with the bitmap image here on every frame    }

希望这可以帮助! 总结

以上是内存溢出为你收集整理的从DJI无人机解码Android上的视频流全部内容,希望文章能够帮你解决从DJI无人机解码Android上的视频流所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1139244.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存