我正在安装Android工作室的DJI Mobile SDK。我想在幻像无人机摄像机上对视频实时馈送应用Opencv滤镜。视频实时馈送位于byte [] videoBuffer中,如代码所示。
mReceivedVideoDataCallBack = new VideoFeeder.VideoDataCallback() {
@Override
public void onReceive(byte[] videoBuffer, int size) {
if (mCodecManager != null) {
mCodecManager.sendDataToDecoder(videoBuffer, size);
}
}
};
我认为一种方法是先在java中将byte [] videoBuffer转换为Mat,然后将Mat地址传递给extern C类。
其次是将byte [] videoBuffer作为jbyteArray传递给extern C,然后将此jbyteArray转换为C中的Mat。
我不知道int size在代码中的作用。
我两个都面临着问题。任何帮助将不胜感激。我被困在这个狗屎上一个多月了。 :(
答案 0 :(得分:0)
videoBuffer可能包含无效字节,因此我们需要使用' size'表示有效部分,表示有效字节从videoBuffer [0]开始,以最后一个字节结束:videoBuffer [size-1]