首页 > 解决方案 > 如何使用 ColorMatrix 将反转颜色应用于 Android Camera2 API 视频?

问题描述

是否可以将反色应用于 Android Camera2 API 视频?

标签: androidmatrixcolorsandroid-camera2

解决方案


不幸的是不容易。

最有效的方法是将相机数据传输到 GPU,在那里运行片段着色器以反转颜色,然后将输出传输到视频编码器。

不幸的是,这是相当多的样板:

  • 创建和配置 MediaCodec 或 MediaRecorder(可能是前者,在这种情况下,如果您最终想要这样,您还需要一个 MediaMuxer 来编写视频文件)
  • 创建一个 EGL 或 Vulkan 上下文,使用 MediaCodec/Recorder 中的 Surface 作为目标图像进行绘制。创建一个 SurfaceTexture 以将相机输出渲染到其中。
  • 使用 GL/Vulkan 的 SurfaceTexture 设置相机。
  • 编写 GL/Vulkan 代码以使用来自相机的纹理渲染一个四边形,以及一个片段着色器以反转颜色
  • 需要时,启动 MediaCodec/Recorder,将帧从 Camera 发送到 SurfaceTexture,然后将文件保存到磁盘。

从好的方面来说,一旦你拥有了所有这些,做很多其他的效果就很容易了。


推荐阅读