Сочетание Gstreamer SurfaceView и GLSurfaceView

У меня есть приложение для Android, которое отображает видео с помощью gstreamer. Это похоже на учебник, упомянутый здесь:

http://docs.gstreamer.com/display/GstSDK/Android+tutorial+3%3A+Video

В частности, он использует GStreamerSurfaceView, который расширяет SurfaceView.

Теперь я хочу обработать видео с помощью другой библиотеки, использующей 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();

Как я могу «вставить» процесс nativeRender GLSurfaceView в GstreamerSurfaceView?


person gregoiregentil    schedule 20.04.2015    source источник
comment
Вы пытаетесь обработать каждый кадр, например. youtube.com/watch?v=kH9kCP2T5Gg или просто наложите один SurfaceView на другой ?   -  person fadden    schedule 20.04.2015
comment
Да, я пытаюсь обработать каждый кадр. Я не пытаюсь интегрировать эту графическую библиотеку поверх gstreamer-android, но моя цель кажется очень похожей. Я хочу перехватывать каждый кадр, который gstreamer отображает на поверхности, и обрабатывать его с помощью этой другой библиотеки.   -  person gregoiregentil    schedule 20.04.2015
comment
Вы не можете зафиксировать вывод SurfaceView; см. напр. stackoverflow.com/questions/27817577 . Если вы можете отправить вывод в SurfaceTexture или TextureView, вы можете захватить каждый кадр.   -  person fadden    schedule 20.04.2015
comment
Спасибо. Это полезно. Я начинаю понимать. Да, я думаю, что мне нужно модифицировать gstreamer, чтобы он выводил в нужный элемент памяти, чтобы библиотека и его GLSurfaceView могли получить его, а затем обработать.   -  person gregoiregentil    schedule 20.04.2015


Ответы (1)


Решение состоит в разработке видеоприемника приложения Gstreamer, который может получать каждый кадр в памяти и копировать его в OnDraw GLSurfaceView.

person gregoiregentil    schedule 29.04.2015