CameraFilter, 研究 Android 用 OpenGL ES 2.0 处理相机预览和滤镜。

分享于 

2分钟阅读

GitHub

  繁體
尝试用OpenGL实现简单的相机滤镜
  • 源代码名称:CameraFilter
  • 源代码网址:http://www.github.com/ongakuer/CameraFilter
  • CameraFilter源代码文档
  • CameraFilter源代码下载
  • Git URL:
    git://www.github.com/ongakuer/CameraFilter.git
    Git Clone代码到本地:
    git clone http://www.github.com/ongakuer/CameraFilter
    Subversion代码到本地:
    $ svn co --depth empty http://www.github.com/ongakuer/CameraFilter
    Checked out revision 1.
    $ cd repo
    $ svn up trunk
    

    ###CameraFilter

    研究 Android 用 OpenGL ES 2.0 处理相机预览和滤镜。

    #####实时滤镜 使用 GLSurfaceView 显示相机画面,用 OpenGL 实现不同滤镜效果。

    android-gpuimage 使用 GL_TEXTURE_2D 作为纹理目标。 在处理相机预览画面时,需要将每帧的图像颜色由 YUV 转成 RBGA,画面不流畅。

    这里使用 GL_TEXTURE_EXTERNAL_OES 作为纹理目标,绕过了 YUV 转 RBGA 步骤。 另外简单处理了一下预览画面的比例。

    #####录制视频 使用 grafika 方案(需要Android 4.3),用 MediaCodec、MediaMuxer 编码生成 MP4。使用 MediaCodec 的 createInputSurface,接收来自 OpenGL 渲染的画面。

    #####图片滤镜 与 android-gpuimage 一样,使用 GL_TEXTURE_2D 作为纹理目标,传入需要处理的图片,然后用滤镜渲染。不过因为纹理目标不同,不能直接套用相机的滤镜,导致每个滤镜分别要写两次......