1

ffmpeg ライブラリを使用してビデオをデコードし、フレーム バッファー データを取得しました。

フレーム バッファを Android バイト配列 (フォーマットは RGB565) にコピーしたい。

フレームバッファデータをCからAndroidバイト配列にコピーするには?

例やアドバイスをくれる人はいますか?

4

1 に答える 1

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);
}

から にデータをコピーするには、次のようなものを使用ByteBufferbyte[]ます。

theVideoFrame.get(byteArray);
于 2013-08-23T08:23:52.367 に答える