如何在android ndk上使用FFmpeg制作视频播放器

时间:2012-07-24 16:50:57

标签: android android-ndk ffmpeg

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

来自tutorial08的代码c(http://dranger.com/ffmpeg/tutorial08.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?
}

如何将我拥有的SurfaceView放在java中? 和其他的东西,在tutorial08.c中如何提取视频并将它们放在java中?我在想什么?

1 个答案:

答案 0 :(得分:0)

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

您可以做的一件事就是在C代码中执行所有FFMPEG内容,将解码后的图像放入队列中。从Java SurfaceView开始,您将从一个单独的线程中将位图传递给本机代码。在本机代码中,您将使用AndroidBitmap_lockPixels和其他此类内容从解码图像中填充该位图的像素。

NDK中有'bitmap-plasma'个样本。虽然它与FFMPEG无关,但它显示了如何使用本机代码对Bitmap进行操作。