我正在尝试使用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中?我在想什么?
答案 0 :(得分:0)
本教程并未考虑使用Android或Java编写。
您可以做的一件事就是在C代码中执行所有FFMPEG
内容,将解码后的图像放入队列中。从Java SurfaceView
开始,您将从一个单独的线程中将位图传递给本机代码。在本机代码中,您将使用AndroidBitmap_lockPixels
和其他此类内容从解码图像中填充该位图的像素。
NDK中有'bitmap-plasma'
个样本。虽然它与FFMPEG
无关,但它显示了如何使用本机代码对Bitmap
进行操作。