Android 采集编码基本流程

本文介绍了Android设备中图像采集和编码的基本流程,包括SurfaceTexture的使用,摄像头和屏幕采集,以及编码数据的处理。通过创建OpenGL纹理和Surface,绑定摄像头与虚拟显示,最后将图像数据送入编码器进行编码,生成视频数据。
摘要由CSDN通过智能技术生成

Android 采集编码基本流程

 我们很多应用少不了 Android录屏,Android 视频电话,首先都需要采集和编码。下面我们介绍基本的原理过程。

一,采集。

  1. SurfaceTexture 在介绍采集图像采集之前,先介绍SurfaceTexture ,字面意思可以看出分两部分Surface 和Texture,即为平面和纹理,说到问题我们想到opengl,不错这个类就是把surface转成opengl纹理,有个队列,队列输入surface 图像,输出opengl纹理。如下图。

 

 

通过上图,无论是一个摄像头还是一个解码器,或者是一个屏幕采集器,都可以通过SurfaceTexture采集到图像。下面我们看具体如何实现的。

  1. 摄像头采集。

2.1,Opengl 初始化,生成一个纹理。

//生成gl 程序。

program_mediacodec = createProgram(vertexSource, fragmentSource);
avPosition_mediacodec = GLES20.glGetAttribLocation(program_mediacodec, "av_Position");
afPosition_mediacodec = GLES20.glGetAttribLocation(program_mediacodec, "af_Position");
samplerOES_mediacodec = GLES20.glGetUniformLocation(program_mediacodec, "sTexture");
enable_correction = GLES20.glGetUniformLocation(program_mediacodec,"enable_correction");
//生成纹理,这个创建两个纹理,一个是关联Camara,一个关联桌面。
int[] textureids = new int[2];
GLES20.glGenTextures(2, textureids, 0);
textureId_mediacodec = textureids[0];
textureId_mediacodec2 = textureids[1];

GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_S, GLES20.GL_REPEAT);
GLES20.glTexParameteri(GLES11Ext.GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_T, GLES20.GL_REPEAT);
GL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值