Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/137.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从DJI Professional 3摄像机流式播放现场视频? 在我的C++应用程序中,我必须从DGI幻像3相机中获取直播视频,以便在OpenCV中进行计算机视觉处理。_Android_C++_Ffmpeg_Dji Sdk_Libstreaming - Fatal编程技术网

Android 如何从DJI Professional 3摄像机流式播放现场视频? 在我的C++应用程序中,我必须从DGI幻像3相机中获取直播视频,以便在OpenCV中进行计算机视觉处理。

Android 如何从DJI Professional 3摄像机流式播放现场视频? 在我的C++应用程序中,我必须从DGI幻像3相机中获取直播视频,以便在OpenCV中进行计算机视觉处理。,android,c++,ffmpeg,dji-sdk,libstreaming,Android,C++,Ffmpeg,Dji Sdk,Libstreaming,首先,我尝试通过UDP套接字发送H264原始数据,在这个回调中: mReceivedVideoDataCallBack = new CameraReceivedVideoDataCallback() { @Override public void onResult(byte[] videoBuffer, int size) { //Here, I call a method from a class I created,

首先,我尝试通过UDP套接字发送H264原始数据,在这个回调中:

        mReceivedVideoDataCallBack = new CameraReceivedVideoDataCallback() {

        @Override
        public void onResult(byte[] videoBuffer, int size) {
            //Here, I call a method from a class I created, that sends the buffer through UDP
            if (gravar_trigger) controleVideo.enviarFrame(videoBuffer, size);

            if (mCodecManager != null)  mCodecManager.sendDataToDecoder(videoBuffer, size);

        }

    };
上述沟通效果良好。但是,我还没有能够解码我的C++桌面应用程序中的UDP H264数据。我已经使用FFmpeg lib进行了测试,但无法使用UDP数据解析
AVPacket
,以便使用
avcodec\u send\u packet
avcodec\u receive\u frame
进行解码。我在
AVCodecContext
方面也遇到了问题,因为我的UDP通信不是RTSP那样的流,它可以从中获取有关其源代码的信息。因此,我不得不改变我试图解决问题的方式

然后,我发现,它可以与Android视频摄像机流到一起,创建一个类似RTSP流连接的数据,在这里,数据可以在我的最终C++应用程序中轻松地使用OpenCV <代码>视频捕获< /代码>。但是,libstreaming使用自己的

surfaceView
。换句话说,我必须将libstreaming
surfaceView
与DJI无人机的
videoSurface
链接起来。我对Android真的是个新手,所以不知道该怎么做


总而言之,这是正确的方法吗?有人有更好的主意吗?提前谢谢

我要赌几件事。嗯,主要是一件事。人们通常需要在发送片段视频包之前创建它们。h264的IDR对于udp流太大

端点之间有一个可靠的com链接,您可以添加一个方法,将单个潜在的大数据包输入转换为一个或多个小数据包输出

可能大于1000字节的数据包需要分成几个h264 NALU类型28。具有相同时间戳的小数据包可以在STAP-A类型24s中发送。通常,您可以在stap-a中找到带内SP/PP

一旦你有了一个IDR和大切片的打包器,在接收器上写下你的depacketizor,然后你应该得到清晰的解码图片


参考h264 RTP规格,了解如何制造28s型。

经过很长时间,我终于开发出一种能够正确传输DJI无人机摄像头的系统