【发布时间】:2015-04-20 01:24:08
【问题描述】:
我有一个使用 gstreamer 显示视频的 Android 应用程序。它类似于这里提到的教程:
http://docs.gstreamer.com/display/GstSDK/Android+tutorial+3%3A+Video
特别是,它使用了扩展 SurfaceView 的 GStreamerSurfaceView。
我现在想使用另一个使用 GLSurfaceView 的库对视频执行一些处理:
class DemoGLSurfaceView extends GLSurfaceView {
public DemoGLSurfaceView(Context context) {
super(context);
setEGLContextClientVersion(2);
mRenderer = new DemoRenderer(context);
setRenderer(mRenderer);
}
DemoRenderer mRenderer;
}
class DemoRenderer implements GLSurfaceView.Renderer {
Context act;
public DemoRenderer(Context context) {
act = context;
}
@Override
public void onDrawFrame(GL10 arg0) {
nativeRender();
}
@Override
public void onSurfaceChanged(GL10 arg0, int arg1, int arg2) {
}
@Override
public void onSurfaceCreated(GL10 arg0, EGLConfig arg1) {
}
}
private static native void nativeRender();
如何将 GLSurfaceView nativeRender 进程“插入”到 GstreamerSurfaceView?
【问题讨论】:
-
您是否尝试处理每一帧,例如youtube.com/watch?v=kH9kCP2T5Gg ,或者只是让一个 SurfaceView 覆盖另一个?
-
是的,我正在尝试处理每一帧。我并没有尝试将这个 grafika 库集成到 gstreamer-android 之上,但我的目标似乎非常相似。我想“拦截”gstreamer 渲染到表面视图的每一帧,并用这个其他库处理它。
-
您无法捕获 SurfaceView 的输出;参见例如stackoverflow.com/questions/27817577 。如果您可以将输出发送到 SurfaceTexture 或 TextureView,您就可以抓取每一帧。
-
谢谢。这很有用。我开始明白了。是的,我认为我需要修改 gstreamer 以便它输出到正确的内存元素,以便库和它的 GLSurfaceView 可以获取它然后处理它。
标签: android surfaceview gstreamer glsurfaceview