我使用 ffmpeg 库来解码视频并获得帧缓冲区数据。
我想将帧缓冲区复制到 Android 字节数组中(格式为 RGB565)。
如何将帧缓冲区数据从 C 复制到 Android 字节数组?
有没有人可以给我一些例子或建议?
我使用 ffmpeg 库来解码视频并获得帧缓冲区数据。
我想将帧缓冲区复制到 Android 字节数组中(格式为 RGB565)。
如何将帧缓冲区数据从 C 复制到 Android 字节数组?
有没有人可以给我一些例子或建议?
您可以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
到 a byte[]
,您可以使用以下内容:
theVideoFrame.get(byteArray);