2016-03-22 16 views
1

Video işlemeyi yapmak için GPU'yu kullanmaya çalışıyorum. Bir videodan kareleri çıkarmada ve bunları GPU kullanarak işlerken çok başarılı oldum. Lütfen toplam bir OpenGL noob olduğumu unutmayın.GPU dokusundan video karesi kaydetme

Aşağıdaki darboğazdan geldim: bitmiş kareyi GPU'dan alma ve bir videoya kaydetme.

this örneğinin farkındayım, ancak tam olarak gereksinimlerime uygun değil.

Benim openGL bağlam i videoya yazmak isteyen dokusunu içeren Bigflake en Örneğin ve mayın, tarafından tarif biri arasında dokular paylaşımı Bana engeller javax.microedition.khronos.egl.EGLContext vardır.

MediaCodec video kodlayıcı verilerini doğrudan GPU'dan beslemenin bir yolu var mı? Araştırmamdan sadece kodlayıcı tarafından sağlanan bir yüzeyin this yöntemini kullanarak bir kaynak olarak ayarlanabileceği görünüyor.

Dokümanı bir şekilde kodlayıcı tarafından sağlanan yüzeye çizebilir miyim?

Talep üzerine herhangi bir ek bilgi vermeye çalışacağım.

+0

Yani - EGL içerik oluşturma adımı üzerinde kontrolünüz yok mu (ör. EGL_RECORDABLE_ANDROID bayrağı mevcut yapılandırmaya eklenemiyor)? – prabindh

+0

Farklı konfigürasyonlarda iki farklı bağlam gereklidir. Biri kareleri ayıklamak ve işlemek için, diğeri yeni film dosyasını yazmak için. İki arasındaki dokuları paylaşamıyorum. – Rakatan

+0

Neden farklı konfigürasyonlara sahip iki bağlama ihtiyacınız var? EGLSurface'i Yüzey ile karıştırmayın, bağımsızdırlar. – fadden

cevap

1

EGL10 Bağlamımı bir EGL14 yerine @fadden önerildiği gibi değiştirdim.

Daha sonra bu içeriği this örneğinde olduğu gibi CodecInputSurface tarafından oluşturulan ile paylaştım.

En önemli adım, paylaşılan dokuyu ikinci bağlam tarafından tanımlanan yüzeye işlemekti. Bunu this cevabının yardımıyla yaptım.

Umarım bu herkes için yardımcı olabilir, eğer istenirse açıklığa kavuşturmaya çalışacağım.

Yardımı için tekrar fadden için teşekkürler :).