我使用ffmpeg库对视频进行解码并获得帧缓冲数据。
我想将帧缓冲区复制到Android字节数组中(格式为RGB565)。
如何将帧缓冲区数据从C复制到Android字节数组?
有人可以给我一些例子或建议吗?
答案 0 :(得分:1)
您可以使用java.nio.ByteBuffer
:
ByteBuffer theVideoFrame = ByteBuffer.allocateDirect(frameSize);
...
CopyFrame(theVideoFrame);
本机代码可能类似于:
JNIEXPORT void JNICALL Java_blah_blah_blah_CopyFrame(JNIEnv *ioEnv, jobject ioThis, jobject byteBuffer)
{
char *buffer;
buffer = (char*)(ioEnv->GetDirectBufferAddress(byteBuffer));
if (buffer == NULL) {
__android_log_write(ANDROID_LOG_VERBOSE, "foo", "failed to get NIO buffer address");
return;
}
memcpy(buffer, theNativeVideoFrame, frameSize);
}
要将数据从ByteBuffer
复制到byte[]
,您可以使用以下内容:
theVideoFrame.get(byteArray);