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

Android OpenGL添加水印并录制视频–抖音视频录制原理

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

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

  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文件

原创文章,转载请注明出处、原文链接!
[email protected] 我的主页https://chenjim.com

参考文章:

  • OpenGL ES SDK for Android: High Quality Text Rendering
  • Github:opengl-es-sdk-for-android/HighQualityTextJava
  • Github:android-openGL-canvas
  • Github:Media for Mobile is a set of easy to use components and API for a wide range of media scenarios such as video editing and capturing
  • VideoRecorder高性能任意尺寸视频录制 断点录制 离屏录制 录制时的Canvas API支持 实时滤镜,相关资料介绍Link
  • 抖音录制视频预习资料

你可能感兴趣的:(Android开发)