请选择 进入手机版 | 继续访问电脑版
正在上传图片(0/1)

关于如何提取Phantom 3的回传视频的问题

 0
手机看帖 9 11014
我想知道有什么办法可以把回传的视频每帧拿过来用呢? FPVDemo里面用的核心部分都是用C语言写的native code 并且都编译成了.so链接库,没办法看源代码:
public void onResult(byte[] videoBuffer, int size){
    mDjiGLSurfaceView.setDataToDecoder(videoBuffer, size);
}具体在setDataDecoder里面用的是var5 = FPVController.native_setDataToDecoder(var1, var2);
而在mDjiGLSurfaceView.start();里面用的则是:
FPVController.native_setSurfaceAndFunc(DjiGLSurfaceView.this, "fcb");
FPVController.native_startSwDecodeThread();
FPVController.native_setIsSoftJniRender(true);
我想知道有什么办法可以把解码后的视频每一帧拿过来用呢? 这样我就可以用opencv的一些功能来处理它们了
评论
上传
你需要登录之后才能回帖    登录 | 注册
楼主   2015-11-8 2#
顺便问下升级到Beta开发者版本 除了机体本身 遥控器是否也一定要升级?  升级方式也是把bin文件放入空u盘或者sd卡 再插到遥控器上?
lanyusea  Inspire 1认证用户 2015-11-9 3#
这一句: mDjiGLSurfaceView.setDataToDecoder(videoBuffer, size);

是封装好的解码函数。

H264裸码流被封装在 videoBuffer里面。所以你需要自己写一个函数来解码。

问题的要点是:
1. 每一个videoBuffer不是完整的一帧,需要自己找帧头帧尾来组帧然后解帧。
2. 关于帧头帧尾请看文档:https://developer.dji.com/cn/support/faq/mobile/
SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

我没有QQ,我没有QQ,我没有QQ。
重要的事情说三遍。
楼主   2015-11-9 4#
lanyusea 发表于 2015-11-9 09:31
这一句: mDjiGLSurfaceView.setDataToDecoder(videoBuffer, size);

是封装好的解码函数。
好的。。。谢谢  
楼主   2015-11-9 5#
lanyusea 发表于 2015-11-9 09:31
这一句: mDjiGLSurfaceView.setDataToDecoder(videoBuffer, size);

是封装好的解码函数。
还有个问题 openGndStation必须在有gps信号的情况下才能打开吗?

用速度模式控制飞机本身也需要有Gps信号?
非常希望解答!
lanyusea  Inspire 1认证用户 2015-11-10 6#
VoltWu 发表于 2015-11-9 20:19
还有个问题 openGndStation必须在有gps信号的情况下才能打开吗?

用速度模式控制飞机本身也需要有Gps信 ...
嗯…… 我印象中是这样的。
SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

我没有QQ,我没有QQ,我没有QQ。
重要的事情说三遍。
eva0564   2015-11-11 7#
lanyusea 发表于 2015-11-9 09:31
这一句: mDjiGLSurfaceView.setDataToDecoder(videoBuffer, size);

是封装好的解码函数。
“相机回传数据是裸H264码流,无任何封装。”请问这句话可以理解为经遥控器hdmi接口输出的h.264码流是无封装的嘛?

是不是只有有了大疆的开发环境,就可以直接对传输的码流进行存储和显示了?对了,好像楼主的开发环境是移动端,不知道On-board提不提供这类功能。
lanyusea  Inspire 1认证用户 2015-11-11 8#
eva0564 发表于 2015-11-11 16:38
“相机回传数据是裸H264码流,无任何封装。”请问这句话可以理解为经遥控器hdmi接口输出的h.264码流是无封 ...
onboard 不清楚。
SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

我没有QQ,我没有QQ,我没有QQ。
重要的事情说三遍。
楼主   2015-11-11 9#
还有个问题 我控制飞机旋转 代码如下 但是按下按钮之后飞机转了一会就不转了 然后模拟器上的log显示  13XXXX 6500 lost data:16XXXX XX 最后两位数字还不停增大 这之后无论怎么按按钮飞机都没有反应(遥控器也不起作用)  但是如果发送降落指令就可以正常降落 我实在不知道会是什么原因?Left = (Button) findViewById(R.id.left);
Left.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_DOWN){
            //handler.sendMessage(handler.obtainMessage(SHOWTOAST, "Down!"));
            left_spin = true;
            new Thread(){
                public void run(){
                    DJIDrone.getDjiGroundStation().sendFlightControlData(20,0,0,0,new DJIExecuteResultCallback(){
                        @Override
                        public void onResult(DJIError djiError) {
                            if (djiError.errorCode != DJIError.RESULT_OK && djiError.errorCode != DJIError.RESULT_SUCCEED) {
                                String result = "errorCode =" + djiError.errorCode + "\n" + "errorDescription =" + DJIError.getErrorDescriptionByErrcode(djiError.errorCode);
                                handler.sendMessage(handler.obtainMessage(SHOWTOAST, result));
                            }
                        }
                    });
                    if(left_spin && gndStation){
                        handlerTimer.postDelayed(this,100);
                    }
                }
            }.start();
        }
        if(event.getAction() == MotionEvent.ACTION_UP){
            //handler.sendMessage(handler.obtainMessage(SHOWTOAST, "Up!"));
            left_spin = false;
        }
        return false;
    }
});



lanyusea  Inspire 1认证用户 2015-11-12 10#
VoltWu 发表于 2015-11-11 22:58
还有个问题 我控制飞机旋转 代码如下 但是按下按钮之后飞机转了一会就不转了 然后模拟器上的log显示  13X ...
如果你是按照 demo项目 里面控制旋转的写法来写的话,

我觉得问题在于你发送的频率太快了飞机响应不过来导致丢包。

你用同样的写法测试一下按下只动一次不会一直动的方式,如果不死的话应该就是这样了。

遥控器拨杆没反应我记得是正常,因为当前处于地面站模式,把mode bar拨成 P 就好了。
SDK板块日常维护志愿者。
我没有QQ,我也不接受私信提问。有问题请去论坛发帖,利人利己。

我没有QQ,我没有QQ,我没有QQ。
重要的事情说三遍。
取消 点赞 评论
分享至:
回复:
上传
取消 评论
快速回复 返回顶部 返回列表