Menggabungkan Gstreamer SurfaceView dan GLSurfaceView

Saya memiliki aplikasi Android yang menampilkan video menggunakan gstreamer. Ini mirip dengan tutorial yang disebutkan di sini:

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

Terutama, ia menggunakan GStreamerSurfaceView yang memperluas SurfaceView.

Sekarang saya ingin melakukan beberapa perawatan pada video dengan perpustakaan lain yang menggunakan 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();

Bagaimana cara "memasukkan" proses nativeRender GLSurfaceView ke GstreamerSurfaceView?


person gregoiregentil    schedule 20.04.2015    source sumber
comment
Apakah Anda mencoba memproses setiap frame, mis. youtube.com/watch?v=kH9kCP2T5Gg , atau cukup letakkan satu SurfaceView di atas yang lain ?   -  person fadden    schedule 20.04.2015
comment
Ya, saya mencoba memproses setiap frame. Saya tidak mencoba mengintegrasikan perpustakaan grafika ini di atas gstreamer-android tetapi tujuan saya sepertinya sangat mirip. Saya ingin mencegat setiap frame yang dirender gstreamer ke tampilan permukaan dan memprosesnya dengan perpustakaan lain ini.   -  person gregoiregentil    schedule 20.04.2015
comment
Anda tidak dapat menangkap output dari SurfaceView; lihat mis. stackoverflow.com/questions/27817577 . Jika Anda dapat mengirim output ke SurfaceTexture atau TextureView Anda dapat mengambil setiap frame.   -  person fadden    schedule 20.04.2015
comment
Terima kasih. Itu berguna. Saya mulai mengerti. Ya, saya rasa saya perlu memodifikasi gstreamer agar menghasilkan elemen memori yang tepat sehingga perpustakaan dan GLSurfaceView-nya bisa mendapatkannya dan kemudian memprosesnya.   -  person gregoiregentil    schedule 20.04.2015


Jawaban (1)


Solusinya adalah dengan mengembangkan sink video aplikasi Gstreamer yang dapat memasukkan setiap frame ke dalam memori dan menyalinnya ke OnDraw dari GLSurfaceView.

person gregoiregentil    schedule 29.04.2015