我正在Android工作室中开发DJI移动SDK。我想对幻影无人机摄像头的视频直播应用Opencv过滤器。视频直播源位于字节[]的视频缓冲区中,如代码所示。
mReceivedVideoDataCallBack = new VideoFeeder.VideoDataCallback() {
@Override
public void onReceive(byte[] videoBuffer, int size) {
if (mCodecManager != null) {
mCodecManager.sendDataToDecoder(videoBuffer, size);
}
}
};
我认为的一种方法是首先在java中将byte[]videoBuffer转换为Mat,然后将Mat地址传递给外部C类。
第二个方法是将byte[]videoBuffer作为jbyteArray传递给extern C,然后将这个jbyteArray转换为C中的Mat。
我不知道in t size在代码中的作用。
我两方面都面临问题。任何帮助都将不胜感激。一个多月来我一直在做这件事。:(
最佳答案
videoBuffer可能包含无效字节,因此需要使用“size”来指示有效部分,这意味着有效字节从videoBuffer[0]开始,以最后一个字节结尾:videoBuffer[size-1]