2012-07-24 67 views
2

我试图使视频播放器使用ffmpeg和我使用本教程http://dranger.com/ffmpeg/tutorial08.html,我理解这个教程转换视频图像YUV,我试图使从.C互动到的.java文件,我有这个如何使用FFmpeg在Android ndk

码c从tutorial08(http://dranger.com/ffmpeg/tutorial08.c),然后我做了

公共类RtspReceiver延伸活动{

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中?我的想法是否正确?

回答

0

本教程尚未针对Android或Java编写。

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

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