2 Star 30 Fork 24

chenjim/CameraDemo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

安卓OpenGL添加水印并录制视频--抖音视频录制原理

本文首发地址 https://blog.csdn.net/CSqingchen/article/details/105492716
最新更新地址 https://gitee.com/chenjim/chenjimblog
源码地址: Gitee: OpenGLRecorder

简单的音视频录制,我们可以使用 MediaRecorder ,具体示例可以参考 Gitee: Camera2Video。本文将介绍采集 Camera 的预览数据,然后通过 OpenGL 添加水印、贴纸、美颜滤镜等后渲染到 GLSurfaceView ,再用 MediaCodec 硬编码后通过 MediaMuxer 写入 MP4 文件。

大致流程如下,详细可以参见相应代码连接

  1. CameraGlView 用来显示Camera预览的View
    CameraGlView extends GLSurfaceView
  2. 创建SurfaceTexture,用来显示Camera预览,参见 CameraRenderer.java
    mSurfaceTexture = new SurfaceTexture(mTextures[0]);  
    mCameraHelper.startPreview(mSurfaceTexture);
    
  3. CameraFilter.java,通过 OpenGL 将 Camera 数据写入 FBO(Frame Buffer Object 帧缓存)
  4. TimeFilter.java,通过 OpenGL 在 FBO 上添加时间水印。可以参考此处添加贴纸、美颜等。
  5. ScreenFilter.java,将 FBO 绘制到 mSurfaceTexture
  6. MediaRecorder.java,用 MediaCodec 和 EGL 对 Surface 的内容采集编码为 avc 并写入到 MP4 文件

可以总结为下图所示

参考文章:

马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Android
1
https://gitee.com/chenjim/CameraDemo.git
git@gitee.com:chenjim/CameraDemo.git
chenjim
CameraDemo
CameraDemo
master

搜索帮助