关于Android端相机应用涉及到的技术

目前AI视觉以及短视频相关的应用都和相机有关,涉及到相机的调用,Surface渲染,视频录制等功能,这里做了一个Demo项目,基本包含了Android相机应用涉及的所有技术。

https://github.com/dingjikerbo/Android-Camera

Android Camera Demos


一、相机预览

序号 项目名称 内容简介
1 GLSurfacePreview 拿到相机帧数据,直接绘制到屏幕
2 GLSurfacePreview2 拿到相机帧数据,先绘制到FBO,离线处理后(变红)绘制到屏幕
3 GLSurfacePreview3 直接给相机的预览纹理绘制到屏幕
4 SurfacePreview 拿到相机帧数据,直接绘制到屏幕
5 SurfacePreview2 拿到相机帧数据,先绘制到PBuffer,再绘制到屏幕
6 MultiSurfacePreview 拿到相机帧数据,先转成纹理,再分别绘制到两个SurfaceView

二、RGB转换

利用GPU将相机帧(NV21)转成RGB并传至CPU,分辨率为1920 * 1080,RGBA

另开一个线程做RGB转换,不然如果和相机共用上下文,渲染时需要来回切换,且可能阻塞相机渲染,对性能不利。

序号 模块名称 内容简介
1 RgbConverter1 直接readPixels,~30ms
2 RgbConverter2 从Pbuffer调readPixels,性能有较大提升,~30ms
3 RgbConverter3 从FBO调readPixels,性能比PBuffer稍好一点,~27ms
4 RgbConverter4 从FBO读到PBO,readPixels阻塞, glMapBuffer阻塞,~11ms
5 RgbConverter5 从Pbuffer读到PBO,readPixels异步, glMapBuffer阻塞,~6ms

三,视频录制

序号 项目名称 内容简介
1 recorder1 录制相机预览以及音频
2 recorder2 录制纹理以及音频

有问题或建议可以给我邮件

Email: [email protected]

你可能感兴趣的:(Android,OpenGL)