首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何播放DJI专业3摄像机的实时视频?

如何播放DJI专业3摄像机的实时视频?
EN

Stack Overflow用户
提问于 2017-04-16 00:49:19
回答 2查看 1.6K关注 0票数 0

我必须在我的C++应用程序中从DJI 3摄像机获取实时流视频,以便在OpenCV中进行计算机视觉处理。

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

代码语言:javascript
复制
        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);

        }

    };

上面的沟通效果很好。但是,我还无法在我的H264桌面应用程序中解码UDP的H264数据。我已经用FFmpeg库进行了测试,但无法使用UDP数据来释放AVPacket,以便使用avcodec_send_packetavcodec_receive_frame进行解码。我对AVCodecContext也有问题,因为我的UDP通信不是像RTSP那样的流,它可以在那里获得有关其源的信息。因此,我不得不改变我试图解决这个问题的方式。

然后,我找到了流流,它可以将android摄像机串流到Wowza服务器,创建类似RTSP流连接的东西,在那里可以轻松地使用OpenCV videoCapture在我的最后一个C++应用程序中获取数据。然而,However使用它自己的surfaceView。换句话说,我必须将link surfaceView与DJI无人机的videoSurface链接起来。我对Android非常陌生,所以不知道怎么做。

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-05 14:37:51

经过很长一段时间,我终于开发了一个系统,可以正确地传输DJI无人驾驶相机。

https://github.com/raullalves/DJI-Drone-Camera-Streaming

票数 0
EN

Stack Overflow用户

发布于 2017-04-29 17:46:02

我要赌几件事。嗯,主要是一件事。通常需要在发送视频数据包之前处理创建分段视频数据包。对于udp流来说,h264的IDR太大了。

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

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

一旦您有了IDR和大片的打包器,请在接收器上写上脱毛器,然后您应该可以得到清晰的解码图片。

有关如何制作类型28s,请参阅h264 RTP规范。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43432644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档