【问题标题】:How to apply inverted color with ColorMatrix to Android Camera2 API video?如何使用 ColorMatrix 将反转颜色应用于 Android Camera2 API 视频?
【发布时间】:2021-03-06 19:04:33
【问题描述】:
是否可以对 Android Camera2 API 视频应用反色?
【问题讨论】:
标签:
android
matrix
colors
android-camera2
【解决方案1】:
不幸的是不容易。
最有效的方法是将相机数据传输到 GPU,在那里运行片段着色器以反转颜色,然后将输出传输到视频编码器。
不幸的是,这是相当多的样板:
- 创建和配置 MediaCodec 或 MediaRecorder(可能是前者,在这种情况下,如果最终需要,您还需要 MediaMuxer 来编写视频文件)
- 创建一个 EGL 或 Vulkan 上下文,使用 MediaCodec/Recorder 中的 Surface 作为目标图像进行绘制。创建一个 SurfaceTexture 以将相机输出渲染到其中。
- 使用 GL/Vulkan 的 SurfaceTexture 设置相机。
- 编写 GL/Vulkan 代码以使用来自相机的纹理渲染四边形,并使用片段着色器来反转颜色
- 如果需要,启动 MediaCodec/Recorder,将帧从 Camera 发送到 SurfaceTexture,然后将文件保存到磁盘。
从好的方面来说,一旦你拥有了所有这些,做很多其他的效果就很容易了。