2

我正在尝试使用 ffmpeg 制作视频播放器,我使用本教程http://dranger.com/ffmpeg/tutorial08.html,我理解本教程将视频转换为视频图像 YUV,我正在尝试制作从 .c 到 .java 交互的文件,我有这个

来自tutorial08(http://dranger.com/ffmpeg/tutorial08.c)的代码c,然后我做了

公共类 RtspReceiver 扩展 Activity {

public SurfaceView sfv;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.principal);
    sfv=(SurfaceView) findViewById(R.id.im);
}

/* load our native library */
static {
    System.loadLibrary("Interface");
}

private static native void Receive(SurfaceView  sf);

}

在c中,我试图了解如何使用它

JNIEXPORT void JNICALL isec_projecto_rtspreceiver_RtspReceiver_Receive(JNIEnv * env, jobject  obj, jobject Surface)
{
//what I have to put in here?
}

我怎样才能把我在java中的SurfaceView放在c中???和其他的事情,在tutorial08.c 中如何提取视频并将它们放入java 中?我想对了吗?

4

1 回答 1

0

本教程的编写并未考虑 Android 或 Java。

你可以做的一件事是在你的 C 代码中做所有的FFMPEG事情,把你解码的图像放在一个队列中。在 JavaSurfaceView中,从一个单独的线程中,您将把位图传递给本机代码。在本机代码中,您将使用解码图像AndroidBitmap_lockPixels和其他类似的东西填充该位图的像素。

NDK 中有一个'bitmap-plasma'示例。虽然它与它无关,FFMPEG但它显示了如何Bitmap从本机代码操作 a。

于 2012-07-24T17:15:26.193 回答