小编Nic*_*lis的帖子

如何直接从Android Surface访问EGL图像以用于MediaCodec视频解码器?

我正在编写一个Android应用程序,我需要缓存视频帧,以便我可以轻松地来回转移,几乎没有延迟.

现在我让android解码视频帧,方法是在MediaCodec对象的Configure调用中提供一个Surface 并调用releaseOutputBufferrender flag设置为true.

的唯一方法,我发现访问解码表面数据(除了解码所返回的字节缓冲区,其格式似乎是依赖于设备的)是调用updateTeximageSurfaceTexture链接到表面,附接这对GL_TEXTURE_EXTERNAL_OES目标和它渲染到GL_TEXTURE2D目标纹理我创建我自己为了缓存它.

我想优化这个缓存过程,并能够解码不同线程上的帧.使用我当前的方法,这意味着我将不得不为视频解码器创建另一个EGL上下文,共享上下文等...

我的问题是:是否可以在不调用的情况下访问与Surface关联的EGL图像或本机缓冲区数据 updateTexImage

这样我就可以缓存egl图像(根据不需要EGL上下文EGL_ANDROID_image_native_buffer).这也将以YUV格式缓存,这比我现在缓存的原始RGB纹理更具存储效率.

video android caching egl mediacodec

9
推荐指数
1
解决办法
3823
查看次数

标签 统计

android ×1

caching ×1

egl ×1

mediacodec ×1

video ×1