【问题标题】:Mixing Gstreamer SurfaceView and GLSurfaceView混合 Gstreamer SurfaceView 和 GLSurfaceView
【发布时间】: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


【解决方案1】:

一种解决方案包括开发一个 Gstreamer 应用视频接收器,它可以获取内存中的每一帧并将其复制到 GLSurfaceView 的 OnDraw。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多